获取类别中的所有帖子(200+)-性能问题?

时间:2014-12-18 作者:Schilling

我想获取某个类别中前两篇和后两篇文章的ID,将其显示为“相关视频”播放列表。我知道有一些功能previous_post_linknext_post_link, 这将为我做的工作,但我想要的不仅仅是一个前一个和一个下一个链接。

设想以下场景:

我想在Post 001上显示#002和#003。在帖子#003上,我想显示#001、#002、#004和#005。

$post_id = $post->ID; // current post id

$args = array(\'category\' => $mycat, \'numberposts\' => 200);
$posts = get_posts($args);
// get ids of posts retrieved from get_posts
$ids = array();
foreach ($posts as $thepost) {
    $ids[] += $thepost->ID;
}
// get and echo previous and next post in the same category
$thisindex = array_search($post->ID, $ids);
$prevvid = $ids[$thisindex-2];
$previd = $ids[$thisindex-1];
$nextid = $ids[$thisindex+1];
$nexttid = $ids[$thisindex+2];
我从Wordpress Codex.

现在让我担心的是:如果我不在numberposts, 当然,它只会获取标准数量的帖子,因此我的代码不会按我想要的方式工作。我可能永远不会在一个类别中有超过200个视频。您认为我的解决方案在性能方面是个坏主意吗?我在其他地方没有找到显示相邻帖子的窍门。

提前感谢您的建议!

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

如果您想查询大量帖子,但不需要每个帖子的完整信息,您可以使用\'fields\' => \'ids\'m见Return Fields Parameter.

在这种情况下,我同意评论,只需多次检索相邻的帖子可能更有意义。你必须使用setup_postdata()wp_reset_postdata() 自从get_adjacent_post() 不允许显式设置post。不幸的是,该函数不太友好,无法重用或利用它生成的SQL。

SO网友:Charles Jaimet

在查询中使用“offset”在当前帖子之前开始两篇帖子。因此,如果你在迭代帖子,而当前帖子是14号,那么抵消12号,要求5篇帖子。这将为您提供数字12-16,这是您所需要的,仅此而已。

$args = array(
  \'category\' => $mycat, 
  \'numberposts\' => 5,
  \'offset\' => 12,
);
$posts = get_posts( $args );

结束

相关推荐