据我所知,没有为用户保存“上次发布”值。您可以通过引用post_date
在*_posts
表中的作者数据*_users
和*_usermeta
. 考虑到这一点,我可以想出几种解决方案。
第一种解决方案:
拉住你的作者。你以后需要这个拉取所有已发布的帖子循环浏览帖子,按作者分类并跟踪最新内容post_date
对于每个作者然后,您可以循环浏览已排序的帖子并将其打印出来以下是问题:
您正在调出所有已发布的帖子。这可能是一个非常沉重、速度很慢的页面,甚至可能超时或内存不足。好处是,您现有的代码也拉取了所有已发布的帖子,但这样做需要使用更多的数据库查询,这通常比一个大查询更糟糕,但并不总是比一个大查询更糟糕你必须循环浏览所有帖子,以便对它们进行排序,然后再次循环打印它们。同样,重、慢和可能有执行超时或内存问题。同样,如果你想做你想做的事,你或多或少会被迫这样做第二种解决方案:
另一种解决方案是运行一个查询以获取每个用户ID的最新帖子,使用该查询对作者数据进行排序,然后使用现有代码打印它们。我相信您需要为该查询编写SQL。我不认为有什么内在原因可以做到这一点。它可能没有第一个解决方案那么多内存问题,但它正在向您已有的几个查询中添加一个查询。
第三种解决方案:
另一个解决方案是循环浏览您的帖子,并在*_usermeta
对于每个作者。每当发布日期更改或发布帖子时,您都必须更新此内容。然后可以使用get_users
按“上次发布”字段排序。这比前面的解决方案更有效,但更复杂。它仍然需要多次访问数据库。
正如您所想象的,这些解决方案都有相当多的代码和调试时间。抱歉没有提供。我认为,如果不真正实现几个解决方案并对其进行调试,我就无法正确地完成它。
也许是另一种选择:
您可能会考虑的另一件事是,通过not 在同一页上打印所有作者的帖子,因为这实际上等于在同一页上打印所有已发布的帖子加上排序开销。例如,如果需要,可以打印按最后一次发布日期排序的作者“索引”页面,其中包含指向作者详细信息页面的链接,该页面上有文章(这与默认情况非常相似,作者显示在“/作者/作者名”)。
此外,您不应该使用query_posts
. 它会重击主查询。使用get_posts
相反