假设您谈论的是WP工具栏,而不是BuddyBar。(对BuddyBar执行此操作的基础在BP级别是相同的,但呈现内容的细节不同。)
看看BP自己是如何构建其通知下拉列表的,这将是很有启发性的bp_members_admin_bar_notifications_menu()
(bp-members/bp-members-adminbar.php
). 它使用BP函数bp_core_get_notifications_for_user()
调用通知列表。后一个函数的特点是:在内部,它按类型组织通知(以获取计数),然后再将其平展。这意味着您的策略是构建自己版本的bp_core_get_notifications_for_user()
, 借用分组逻辑,但不是将所有通知折叠为单个对象,而是返回仅包含特定类型通知的对象(基于此处所称的$notification->component_name
或$notification->component_action
). 然后根据返回的信息创建新的WP工具栏菜单,使用与bp_members_admin_bar_notifications_menu()
但乘以3(用于通知、消息和好友请求)。
我认为BuddyPress本身有一个合理的增强请求,即component
或action
参数(或两者兼有)bp_core_get_notifications_for_user()
. 您可以将此请求留在http://buddypress.trac.wordpress.org 如果你愿意的话。