У меня есть то, что я чувствую, это уникальная ситуация здесь, и я размышлял над тем, как сделать это в течение нескольких дней.
Во-первых, я нашел несколько очень полезных тем здесь и в Интернете, таких как
Как добавить пользовательское уведомление
У меня есть собственный тип записи, называемый «соавторы», и я разрабатывал интерфейсную форму и класс 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?
}
Задача ещё не решена.
Других решений пока нет …