WP Admin中按标题排序页面无效

时间:2014-08-29 15:06:50

标签: php wordpress advanced-custom-fields wp-query

我想在Wordpress管理员中为自定义帖子类型的自定义元字段中生成一个复选框列表。我正在使用ACF来创建字段。我可以查询所有页面,但不遵守orderby参数。它只是通过date_created输出它们。

这是我的问题:

$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 dump:

    ...
    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'
    ...

这是因为查询是在admin中进行的吗?一旦循环完成,我当然可以对数组进行排序,但为了更好地理解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 ));

以alpha顺序转储页面名称。

1 个答案:

答案 0 :(得分:0)

这是两个错误的混合。

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

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

ACF文档说它应该是'meta_key_num',但这对我不起作用。我可以使用'meta_value'通过自定义ACF字段订购。