合并了两个WP_查询,每页帖子和分页不起作用

时间:2014-04-27 作者:Anagio

我用下面的代码合并了两个WP\\u查询,它在最终的组合对象中有分页设置和每页的帖子,但这些设置不起作用。我的页面显示了24篇文章,这个数字是从哪里来的,为什么分页不起作用?

$args1 = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => -1
    );
$query1 = new WP_Query( $args1 );

    $args2 = array(
    \'post_type\' => \'product\',
    \'product_tag\' => \'home\',
    \'posts_per_page\' => -1
    );
$query2 = new WP_Query( $args2 );

$paged = get_query_var(\'paged\') ? get_query_var(\'paged\') : 1;

$finalargs = array(
  \'paged\' => $paged,
  \'posts_per_page\' => 3
);

$wp_query = new WP_Query($finalargs);

$wp_query->posts = array_merge( $query1->posts, $query2->posts );

$wp_query->post_count = count( $wp_query->posts );

echo \'<pre>\';
//var_dump($wp_query); exit(0);
echo \'</pre>\';
var\\u dump的输出如下,因此,如果我的wp\\u查询具有每页的帖子和分页设置,为什么它不工作?

object(WP_Query)#566 (47) {
  ["query"]=>
  array(2) {
    ["paged"]=>
    int(1)
    ["posts_per_page"]=>
    int(3)
  }
  ["query_vars"]=>
  array(61) {
    ["paged"]=>
    int(1)
    ["posts_per_page"]=>
    int(3)
    ["error"]=>
    string(0) ""
    ["m"]=>
    string(0) ""
    ["p"]=>

1 个回复
SO网友:NaamaGold

我确实有这个问题。我刚刚偶然发现了解决方案!

如果这对您有帮助,在数组合并之前的两个初始查询中,我将posts\\u per\\u页面更改为-1 like \'posts_per_page\' => -1 而不是10个。当我这样做时,分页链接突然出现,并且工作正常。

我接着补充道 \'posts_per_page\' => 10 到array\\u merge之后的最终查询,以便每页显示10个。

EDIT:

现在看看你的代码,我看到你也这么做了。然后,您应该像我一样改变查询方式,通过合并结果数组,然后对合并的结果进行查询。这对我有用,但你的方式没有。

$other_reviews = get_posts( 
    array( 
        \'fields\'         => \'ids\',
        \'post_type\'      => \'post\', 
        \'cat\'            => 36, 
        \'posts_per_page\' => -1, 
        \'paged\'          => $paged, 
        \'orderby\'        => \'date\', 
        \'order\'          => \'DESC\' 
    )
);

$reviews = get_posts( 
    array( 
        \'fields\'         => \'ids\', 
        \'post_type\'      => array( \'reviews1\',\'review2\' ), 
        \'posts_per_page\' => -1, 
        \'paged\'          => $paged, 
        \'orderby\'        => \'date\', 
        \'order\'          => \'DESC\' 
    )
);
然后我们将它们合并在一起:

// merging ids
$post_ids = array_merge( $other_reviews, $reviews );
并使用以下内容构造组合查询:

// the main query
$query = new WP_Query(
    array(
        \'post_type\'      => \'any\',
        \'post__in\'       => $post_ids, 
        \'paged\'          => $paged,
        \'orderby\'        => \'date\', 
        \'order\'          => \'DESC\',
        \'posts_per_page\' => 10
    )
);

结束

相关推荐

Pagination URL order

我正在尝试按分类法为自定义帖子类型创建过滤器。当我使用过滤器选项时,它会创建一个不起作用的URL:/projecten-test/?branche=industrie/page/2/.但当我手动输入此url时,它确实起作用:/projecten-test/page/2/?branche=industrie我该如何自动完成这一点呢?我应该更改将php GET添加到URL的方法吗?我应该更改此函数底部的wp\\U重写吗//在自定义post typefunction paginate()上使用分页{全局$wp\