无法有条件地添加$ args $ _GET值 - WordPress

时间:2018-05-13 18:54:08

标签: wordpress sorting

在WordPress中我有一个带有一些$ args数组的循环,我希望能够根据$ _GET值有条件地进行编辑。

$args = array(
  'post_type'       => 'property',
  'post_status'     => 'publish',
  'posts_per_page'  => -1,
  'meta_query'      => $meta_query,
  'tax_query'       => $tax_query,
  'fields'          => 'ids',
  'no_found_rows'   => true,
  'post__in'        => $post__in,
  'nopaging'        => true
);

当像这样添加到$ args数组时:

if ( $_GET['prop_sort'] == 'price' ) {
  $args['orderby']  = 'meta_value_num';
  $args['order']    = 'ASC';
  $args['meta_key'] = $prefix . 'price';
}

没有任何变化,并且添加到$ args的内容会被忽略。但是,当我把这样的代码放在:

args = array(
  'post_type'       => 'property',
  'post_status'     => 'publish',
  'posts_per_page'  => -1,
  'meta_query'      => $meta_query,
  'tax_query'       => $tax_query,
  'fields'          => 'ids',
  'no_found_rows'   => true,
  'post__in'        => $post__in,
  'nopaging'        => true
);

$args['orderby']  = 'meta_value_num';
$args['order']    = 'ASC';
$args['meta_key'] = $prefix . 'price';

一切按预期工作,帖子按价格从小到大排序。 可能是什么问题?

编辑:

尝试影响这样的查询:

function myplugin_pre_get_posts( $query ) {

  if ( ! is_admin() && $query->is_main_query() && $query->query_vars['post_type'] == 'property' ) {
      $query->set( 'orderby', 'meta_value_num' );
      $query->set( 'order', 'ASC' );
      $query->set( 'meta_key', 'sb_price' );
  }

  return $query;
}
add_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );

Dones也不起作用(第65行的.. \ functions.php中的未定义索引:post_type)。

0 个答案:

没有答案