为什么分页不能与TAX_QUERY参数一起使用?

时间:2019-06-13 作者:Luca Reghellin

这是我的问题:

  $p_query = new WP_Query(array(
    \'post_type\' => $post_type
    ,\'post_status\' => \'publish\'
    ,\'posts_per_page\' => $per_page // 6
    ,\'paged\' => $page // 2
    ,\'post__not_in\' => array($first_post) // an ID
    ,\'tax_query\' => array(
       array(
         \'taxonomy\' => $data[\'tax\'] // tax slug
         ,\'field\'    => \'slug\'
         ,\'terms\' => $data[\'term\'] // term slug
       )
    )
  ));
分页工作正常,无需tax\\u查询。我一加上它,第2页就发生了一些奇怪的事情:

返回正确的项数(剩余项数)

这些项目错了:它们又是最初的项目。

换句话说,如果per_page 是6,总共是8,在第2页我会得到2个项目,但不是项目7,8,而是1,2。

为什么?怎么了?

1 个回复
SO网友:Luca Reghellin

我自己找到了解决办法。简而言之:使用\'order\' => \'DESC\'

长话短说:

由于我是通过php(标准循环)执行第一个页面查询的,而上面是通过ajax完成的,通过分页(因此第1页是php,下面是ajax),因此顺序不匹配。我仍然在检索似乎是第1页的帖子,因为查询是用默认的ASC 订单,而标准循环在默认情况下使用DESC order(基于日期)。因此,ajax检索到的帖子实际上是第2页!

通过颠倒顺序,我现在得到了正确的帖子。

相关推荐

查询字符串格式$_GET[‘VALUE’]不在wp_Query中作为元值工作

这是我的密码。真奇怪!如果我将任何静态值替换为$s\\u字符串,它就可以正常工作。提前感谢您的帮助。$s_string = !empty($_GET[\'q\']) ? sanitize_text_field($_GET[\'q\']) : \'\'; $custom_fields = new WP_Query(array( \'post_type\' => \'post_type\', \'posts_per_page\' =