自分のサイトに関連するタグのチェック ボックスを一覧表示するカスタム プロファイル フィールドを使用して、BuddyPress をセットアップしました。
新しい投稿がアップされるたびに、カスタム プロファイル フィールドの選択に基づいて、登録された BuddyPress ユーザーに自動通知を送信する方法はありますか?
自分のサイトに関連するタグのチェック ボックスを一覧表示するカスタム プロファイル フィールドを使用して、BuddyPress をセットアップしました。
新しい投稿がアップされるたびに、カスタム プロファイル フィールドの選択に基づいて、登録された BuddyPress ユーザーに自動通知を送信する方法はありますか?
save_post
フックはあなたを助けることができます。
http://codex.wordpress.org/Plugin_API/Action_Reference/save_post
次のようなもの:
function send_bp_message( $post_id )
{
//verify post is not a revision
if( wp_is_post_revision($post_id) )
{
return;
}
// get the user ids you want to notify
global $bp, $wpdb;
$custom_field_id = 1; // the profile field you want to check
$custom_field_value = 'true'; // the value you're looking for
$stmt = $wpdb->prepare("
SELECT
{$bp->profile->table_name_data}.user_id
FROM
{$bp->profile->table_name_data}
LEFT JOIN
{$bp->profile->table_name_fields} ON {$bp->profile->table_name_fields}.id = {$bp->profile->table_name_data}.field_id
WHERE
{$bp->profile->table_name_fields}.id = %d
AND
{$bp->profile->table_name_data}.value LIKE %s
", $custom_field_id, $custom_field_value);
$recipient_ids = $wpdb->get_col($stmt); // array of matched user ids
// send buddypress notification to matched user ids
// (you could loop through $recipient_ids to send individual notifications)
$msg_args = array(
'sender_id' => 1, // 1 = admin
'recipients' => $recipient_ids,
'subject' => 'New post',
'content' => 'A new post has been created...'
);
$thread_id = messages_new_message($message_args);
}
add_action('save_post', 'send_bp_message');