POSTS_PER_PAGE-仅重复第一个帖子‘post__in’数组

时间:2014-03-14 作者:Roc

这个问题与我在这里能够解决的前一个问题相关:https://wordpress.stackexchange.com/a/137929/28389

我正在为\'post__in\', 我可以运行这个没有问题。

然而,当我使用默认的“每页10篇帖子”循环帖子时,每次加载下一页时,它都会反复加载前10篇帖子。不去11-20、21-30等。

我的数组由100个帖子id组成。

以下是我使用的代码:

$args = array(
  \'post_type\' => $post_type,
  \'order_by\' => \'post__in\',
  \'post__in\'  => $post_ids, // This is an array of 100 post id\'s
  \'ignore_sticky_posts\' => 1,
);

$wp_query = new WP_Query( $args );

if (have_posts()) :
   usort($wp_query->posts, function($a, $b) use ($post_ids) { // Lists loop in order of the array -> http://pastebin.com/3vwiDSfb
      return array_search($a->ID, $post_ids) - array_search($b->ID, $post_ids);
   });
   while(have_posts()) : the_post();
     ...   
   endwhile;    
endif;
所以当我使用\'posts_per_page = -1\', 或者nopaging = true\', 阵列中的所有100篇文章都显示良好。但我需要posts_per_page 选项”,用于延迟加载原因。

更新的工作代码:

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

$args = array(
  \'post_type\' => $post_type,
  \'orderby\' => \'post__in\',
  \'post__in\'  => $post_ids,
  \'paged\' => $paged,
  \'ignore_sticky_posts\' => 1,
);

$wp_query = new WP_Query( $args );

if (have_posts()) : while(have_posts()) : the_post();
     ...  
   endwhile;    
endif;

1 个回复
最合适的回答,由SO网友:Milo 整理而成

如果传递了正确的orderby 论点你有order_by 带下划线orderby, 无下划线。

然后可以设置paged 到您想要的页码,并且posts_per_page 每一页上你想要多少。现在你没有设置要检索的页码,所以你总是会得到相同的帖子集。

看看pagination parameters on WP_Query Codex page.

结束

相关推荐

posts_per_page is not working

我有一个查询来显示自定义帖子类型类别的帖子,但我想限制posts_per_page 到8,所以我使用下面的代码<如果我做错了什么,请告诉我。<?php $args = array( \'post_type\' => \'cs_album\', \'posts_per_page\' => 8, \'tax_query\' => array( array( \'tax