0

我很想通过使用简码(运行 bbPress 2 + 未读主题插件)来显示未读 bbPress 主题的列表。

未读插件会创建一个postmeta名为的时间戳bbpress_unread_posts_last_visit_X(其中 X 是当前登录的用户 ID)。要显示未读主题列表,我会搜索所有具有bbpress_unread_posts_last_visit_X < _bbp_last_active_time.

当前讨厌的解决方案:

利用现有的[bbp-topic-index]简码 - 这会显示所有主题的列表并处理自定义 bbpress 主题模板等。

所以我应用了一个过滤器,bbp_after_has_topics_parse_args它添加了一个新meta_query参数来寻找这个新的未读帖子键bbpress_unread_posts_last_visit_X。然后,我必须过滤原始生成get_meta_sql的 SQL 以调整 SQL,以便它与其他 postmeta 值而不是硬编码的值进行比较meta_query

get_meta_sql没有那个讨厌的黑客,谁能看到更好的方法来实现这一目标?这种快速解决方案的主要问题是,如果您单击未读列表上的“下一页”,它将转到所有主题(未读或未读)的正常下一页。

代码:

https://gist.github.com/dtbaker/5906404

在此处实现(滚动到底部):

http://ultimateclientmanager.com/forums/

编辑:将此短代码放在自己的页面上可以正常工作并解决分页问题(例如:http ://ultimateclientmanager.com/forums/unread-forum-posts/ )

4

1 回答 1

0

嘿嘿,

我在你的插件中发现了一个小错误。您在 bbp_unread_posts_OnTopicVisit() 函数中使用 time(),因此您忽略了时区差异。

解决方案:使用 wordpress 功能current_time('timestamp')代替time().

于 2013-10-14T11:45:38.960 回答