WordPress meta_query for Custom Post Type with orderby

WordPress meta_query for Custom Post Type with orderby

我正在尝试为自定义 Post 类型整理 WordPress 查询,但我无法使其工作。

post 类型是 events。一个名为 sticky (yes/no) 的 Advanced Custom Fields 字段用于排序(贴在上面),另一个名为 glamrock (yes/no) 的 ACF 字段用于排序排除某些 posts.

结果是,glamrock 被排除,但即时贴未排序。

如果我删除 meta_query,排序工作正常,但包含 glamrock post。

$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 并没有改变任何东西。它似乎仍然按 date/time.

排序

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

除了参数,我还包含了循环。

您只需指定 meta_value,因为您的 meta-key 不是数字

'orderby' => 'meta_value'

@Mihai 说得对:meta_value_num 是主要问题。我把它改成了meta_value。这是有效的 query/loop:

$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;