我觉得我觉得这是一种独特的情况,而且几天来一直在倾注如何做到这一点。
首先,我在网上找到了一些非常有用的帖子,比如
How to add a custom notifcation
我有一个名为“协作”的自定义帖子类型,我一直在开发一个前端表单和php类来处理表单。几乎该表单允许注册用户从前端创建帖子并将其保存为草稿或发布。我也在使用Co Authors扩展,因此在前端表单上,用户可以选择要与之协作的各个成员。所有这一切都很好。
我想要做的是点击默认的buddypress行为,这样当有人分享(草稿)帖子进行协作时,它会在其通知标签中通知每个用户。我有一个功能,可以向他们发送电子邮件,但希望在他们的通知下也可以在网站上找到它。
我在这里附上我的课程以供参考:http://pastebin.com/HWNM8dHq
但这是我的问题。我看到如何添加通知但是如何配置要说的内容和后备?我假设我需要一个带有我自己的component_action的函数?
**************************************************
Buddypress Notifications - Custom
**************************************************/
function add_collaboration_notification($activity, $subject, $message, $content, $user_id) {
//bp_notifications_add_notification
if ( bp_is_active( 'notifications' ) ) {
bp_notifications_add_notification( array(
'user_id' => $user_id,
'item_id' => $activity->id,
'secondary_item_id' => $activity->user_id,
'component_name' => buddypress()->activity->id,
'component_action' => 'new_at_mention',
'date_notified' => bp_core_current_time(),
'is_new' => 1,
) );
}
}
//Hook into BP action or possibly save_post action?
function function_format_notification() {
//use $component_action defined above
//look at friends_format_notifications() in bp-friends.php
}
//Hook in core components notification system
最终结果应该是每次保存帖子并且我的类公共函数publish()或send_message运行时它也会向这些用户显示通知。这是我班上的片段:
public function send_message($subject, $message) {
if($this->co_authors) {
//verify post is not a revision
if( wp_is_post_revision($this->post_id) )
{
return;
}
$recipients_object = array();
foreach($this->co_authors as $recipientID){
$user_info = get_userdata($recipientID);
$email = $user_info->user_email;
$recipients_object[] = $email;
}
$to = implode(", ", $recipients_object);
// Send it!
wp_mail( $to, $subject, $message );
}
//do_action('send_message'); Create action to plug in to add_notifications?
}