Better way to query posts?

时间:2016-11-01 作者:Reygoch

我在我的wp网站上有几个类别。

在头版上,我想为所有现有类别制作部分,然后从每个类别中输出4篇最新文章。

有没有更优雅的方式来查询这些文章?

目前,我首先获取所有现有类别:

get_terms(\'category\', array(\'hide_empty\' => 0)
比我用的还多foreach 要循环浏览这些类别,在每个循环周期中,我将使用以下方法从该类别中获得4篇文章:

$articles = get_posts(array(\'numberposts\' => 4, \'category\' => $c->term_id));
所有这些都在我不喜欢的模板文件中。

Is this the recommended wordpress way, or is there more elegant solution?

我还担心,默认情况下,wordpress allready会提前在主页上查询最新的文章,所以在我的情况下,这种查询有点浪费。

2 个回复
SO网友:Mark Kaplun

由于查询彼此不相关,因此没有其他解决方法。在一个有许多类别的站点上,您将以许多查询和慢速页面(当它未被缓存时)结束。

更好的方法可能是显示最近的50篇帖子,并按类别显示,但这取决于您实际想要显示的内容。如果它是新闻样式的页面,那么您只需应用一些缓存即可获得良好的性能。

SO网友:Tom J Nowell

不,您需要第一条信息来了解第二条信息的检索内容。

还有,如果你要使用get_posts, 确保:

检查返回值是否有错误使用\'supress_filters\' => false 以便在内部缓存结果,get_posts() 使用WP_Query 这就是主循环所使用的,为什么不去掉中间人呢?

请记住,WordPress试图在WP\\U缓存中缓存内容。如果您安装并配置了持久对象缓存(如memcached或Redis),则可以使用它在页面负载之间持久化,从而使事情更快。因此,如果WordPress已经检索到了这些帖子,就不会花那么多钱

相关推荐

GET_THE_TERMS与wp_GET_POST_TERMS中的奇怪结果

我正在尝试制作一个面包屑函数,但有一个小问题。。。使用时:$categories = get_the_terms( $post->ID, \'product_cat\' ); 我得到了一个循环中使用的类别数组,等等。唯一的问题是它是按字母顺序排列的。(我希望它按层次顺序排列。)经过一番挖掘,我发现了一种替代方法,即使用wp\\u get\\u post\\u terms(),但我肯定遗漏了一些东西,因为当我使用此方法时:$categories = wp_get_post_terms( $p