2014-08-29 56 views
0

我想在Wordpress管理中的自定义帖子类型的自定义元字段中生成复选框列表。我正在使用ACF创建字段。我可以查询所有页面,但orderby参数不受尊重。它只是通过date_created输出它们。在WP管理页面按标题排序管理不起作用

这里是我的查询:

$pageArgs = array(
    'post_type' => 'page', 
    'posts_per_page' => -1, 
    'nopaging' => true, 
    'orderby' => 'title', 
    'order' => 'ASC' 
); 
    $pageArray = array(); 
    $pageQuery = new WP_Query($pageArgs); 
    if($pageQuery->have_posts()) { 
    while($pageQuery->have_posts()) { 
     $pageQuery->the_post(); 
     $pageArray[get_the_permalink()] = get_the_title(); 
    } 
    } 

你可以看到我创建一个空数组,并从查询中输入值到循环中的数组。如果在循环后转储数组,orderby参数不会被反映出来。此外,如果我转储查询对象,它显示SQL查询,它仍然按menu_order排序。

$ pageQuery转储:

... 
    public 'request' => string 'SELECT SQL_CALC_FOUND_ROWS wp_8_posts.ID 
    FROM wp_8_posts 
    WHERE 1=1 AND wp_8_posts.post_type = 'page' AND ((wp_8_posts.post_status = 'publish')) 
    ORDER BY wp_8_posts.menu_order, wp_8_posts.post_date DESC LIMIT 0, 10' 
    ... 

这是因为查询在管理做出?我肯定可以对数组进行排序,一旦循环完成,但为了更好地理解WP,我想知道为什么会发生这种情况。

而且,我可以查询这一点,它正确地列出了网页....

$args = array(
    'authors'  => '', 
    'child_of'  => 0, 
    'date_format' => get_option('date_format'), 
    'depth'  => 0, 
    'echo'   => 1, 
    'exclude'  => '', 
    'include'  => '', 
    'link_after' => '', 
    'link_before' => '', 
    'post_type' => 'page', 
    'post_status' => 'publish', 
    'show_date' => '', 
    'sort_column' => 'post_title', 
    'title_li'  => __('Pages'), 
    'walker'  => '' 
); 
    var_dump(wp_list_pages($args)); 

其转储字母顺序页面名称。

回答

0

这是两个错误的混合。

我的查询是非常错误的,以及ACF文档。它应该是

'post_type' => 'page', 
'posts_per_page' => -1, 
'orderby' => 'meta_value', 
'meta_key' => 'title', 
'order' => 'ASC' 

ACF文档说应该是'meta_key_num',但没有为我工作。我可以通过使用'meta_value'的自定义ACF字段进行订购。