高级POST显示/分页/排序

时间:2014-11-04 作者:Joe

我正在从事一个项目,该项目需要对帖子进行一些高级排序和高级分页。

基本上,我们在一个类别中有帖子,让我们称这个类别为“mycategory”。然后,我们有post优先级(standard、sub和main)(这些优先级存储为自定义post字段值)。每页分页显示总共20篇文章。

显示类别页面时,第一个页面将显示以下内容:

所有帖子都来自“mycategory”类别因此,第一页应按日期顺序显示最新的main、2个最新的sub,然后显示上文3中尚未显示的main、sub和standard的任意组合。

显示第二页时,其工作方式不同:

所有帖子都来自“mycategory”类别<如上所述,显示的所有其他帖子都是未显示在第一页上的主、辅和标准的组合。也按日期顺序。最新优先

我不太确定如何在WordPress中实现这一点。有人有什么想法吗?

如果需要更多信息,请告诉我。

1 个回复
SO网友:Milo

关于我将如何处理这个问题的一些想法。如果有时间的话,我可以稍后用一些代码进行更新。

我将使用两个额外的查询处理第一页,因此在第一页上有三个循环。钩pre_get_posts 并对前两个循环中出现的三篇文章进行两次元查询。这些将被缓存,以便稍后在页面上显示它们时使用。不过,您现在想要的是帖子ID。使用这些设置post__not_in 在您的主查询中。也许把这些ID暂时放在后面的页面中?您必须从所有页面中排除这3个ID,才能正确分页。那件事我不确定。

第二页及以后,通过相同的post__not_in 就像你在第一页设定的那样。

要在主查询中获得第一页上的17篇帖子和后续页面上的20篇帖子,您必须设置offset 手动,并更正found_posts 通过过滤器。我刚刚用一些可能有用的代码回答了另一个问题:Trying to exclude first 5 posts from the first page on the homepage.

结束