我收到了来自不同客户的多个请求,希望找到一种方法来修改他们的博客(index.php)或自定义帖子类型的归档页面,以便显示较少的特定类别的帖子。
一个很好的例子是,一个客户拥有一个从社交媒体(Facebook、Twitter、Instagram)自动发帖的系统,该系统可以在WordPress博客的“社交媒体”类别中发帖。如果这个客户在社交媒体上发了很多帖子,并且在博客上写了一些实际的帖子,那么社交媒体的帖子将主导他们的博客(至少在第一页上)。在这种情况下,客户需要一种方法来限制博客上每页“社交媒体”类别的帖子。
我考虑使用pre_get_posts
修改查询,但似乎找不到任何关于如何限制索引中特定类别每页的帖子数的示例。php页面。
我还考虑进行两个单独的查询(一个用于“社交媒体”类别,另一个不包括该类别),并按一定顺序组合它们。使用这种方法,我想我可以创建一个循环,将2个数组的ID组合成1个,这样每四个项目都将来自“社交媒体”类别。
不过,这听起来有点像黑客,我想知道是否有一种更优雅/不那么凌乱的方式来完成这项工作。
SO网友:Rarst
通常情况下,问题不仅仅在于主页,还在于分页的连续性。
假设我们从主页上的10篇帖子开始,其中5篇是社交帖子。客户表示,他们希望少2个社交网站。
我们可以很容易地摆脱它们,但现在我们需要从第二页“借用”另外两篇帖子。所以我们这样做了。
但下一个用户单击第二页。我们的逻辑不是简单的“接下来的10篇文章”,而是“前10篇之后的10篇文章,但显示我们没有在那里显示的社交文章,也没有显示正常的文章,第一页取自这篇文章”。沿着这些路线。
下一个用户单击第三页。。。它是化合物。
唯一合理的解决方案是两个循环。我们将正常的post和分页留给主循环,并在这两者之间拼接任何额外的内容(甚至不一定修改post数组,只需在循环中的每个第n个post之后计数并执行某些操作),或者将它们单独显示为辅项。