WordPress查询帖子:使用meta_query参数比较postmeta值

时间:2013-07-02 02:41:13

标签: wordpress wordpress-plugin

我希望通过使用短代码(运行bbPress 2 +未读的主题插件)来显示未读的bbPress主题列表。

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

的帖子

当前令人讨厌的解决方案:

利用现有的bbpress_unread_posts_last_visit_X < _bbp_last_active_time短代码 - 显示所有主题的列表并处理自定义bbpress主题模板等。

因此,我向[bbp-topic-index]应用了一个过滤器,该过滤器添加了一个新的bbp_after_has_topics_parse_args参数,用于查找此新的未读帖子密钥meta_query。然后,我必须从bbpress_unread_posts_last_visit_X过滤原始生成的SQL,以便调整SQL,使其与其他postmeta值进行比较,而不是get_meta_sql的硬编码值。

如果没有令人讨厌的meta_query黑客,有没有人能够找到更好的方法来实现这一目标?这个快速解决方案的主要问题是,如果您点击未读列表中的“下一页”,它将转到所有主题的正常下一页(未读或未读)。

代码:

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

在这里实现(滚动到底部):

http://ultimateclientmanager.com/forums/

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

1 个答案:

答案 0 :(得分:0)

Heyho,

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

解决方案:使用wordpress函数current_time('timestamp')代替time()