使用orderby的自定义帖子类型的WordPress元查询

时间:2016-01-03 15:50:30

标签: wordpress custom-post-type advanced-custom-fields

我试图为自定义帖子类型整理WordPress查询,但我无法使其正常工作。

帖子类型为events。名为sticky的{​​{3}}字段(是/否)用于排序(顶部的粘性),另一个名为glamrock的ACF字段(是/否)用于排除某些帖子。

结果是,glamrock被排除在外,但是胶粘物没有被排序。

如果我删除meta_query,排序工作正常,但会包含glamrock个帖子。

$bpb_args = array(
  'numberposts'     => -1,
  'post_type'       => 'events',
  'posts_per_page'  => 100,
  'paged'           => get_query_var( 'paged', true ),
  'meta-key'        => 'sticky',
  'meta_query'      => array(
    array(
      'key'     => 'glamrock',
      'value'   => 'no',
      'compare' => 'IN',
    )
  ),
  'orderby'   => 'meta_value',
  'order'     => 'ASC',
);

$bpb_query = new WP_Query( $bpb_args );

if( $bpb_query->have_posts() ):
  while( $bpb_query->have_posts() ) : $bpb_query->the_post();
  //show post
  endwhile;
endif;

更新

不幸的是,meta_value代替meta_value_num并未改变任何内容。它似乎仍按日期/时间排序。

高级自定义字段类型是单选按钮。

除了参数之外,我还包括循环。

2 个答案:

答案 0 :(得分:1)

由于Model.find({ [key] : { $regex : search } }) 为非数字

,因此您只需指定meta_value
meta-key

答案 1 :(得分:0)

@Mihai说得对:meta_value_num是主要问题。我将其更改为meta_value。这是查询/循环,有效:

$args = array(
  'post_type'       => 'events',
  'post_status'     => 'publish',
  'posts_per_page'  => -1,
  'meta_key'        => 'sticky',
  'orderby'         => 'meta_value',
  'order'           => 'ASC',
  'meta_query'      => array(
    array(
      'key'         => 'lizenz_erteilt',
      'value'       => 'no',
      'compare'     => 'LIKE',
    ),
  )
);

$query = new WP_Query( $args );

// Loop
if( $query->have_posts() ) :
  while( $query->have_posts() ) : $bpb_query->the_post();
    //show post
  endwhile;
endif;