見出し画像

「WP User Frontend編」投稿が更新されたときにメール通知を送信する方法

WP User Frontendでは新規に投稿されたときに通知させるメール設定が既にありますが、更新された際の通知はPRO版しか使用できません。
できれば無料版で投稿更新の通知ができるようにしたい。
そんな方のために投稿更新通知できるようにするコードを作成しました。

function custom_wpuuf_post_update_notification($post_id){
	$post = get_post($post_id);
	$to = 'info@example.com' //自分のメールアドレスを入れます;
	$subject = '件名が入ります' //任意の件名;
	$nickname = get_user_meta(get_post_field('post_author', $post_id), 'nickname', true) //ここでは投稿者のニックネーム;
	$content = get_the_title($post_id);
	$author_id = get_post_field('post_author', $post_id);
	$siteurl = esc_url(home_url('/'));
	$data_id = $post_id;
	$editlink = $siteurl.'wp-admin/post.php?post='.$data_id.'&action=edit';
	$message =<<<EOS
以下のユーザーが投稿を更新しました。
問題がなければ公開状態を確認し、「更新」ボタンを押してください。

▼▼更新記事▼▼
----------------------------------------
ニックネーム:{$nickname}
タイトル:{$content}

■内容の確認
→{$editlink}
----------------------------------------
EOS;
	wp_mail($to, $subject, $message);
}
add_action('wpuf_edit_post_after_update', 'custom_wpuuf_post_update_notification');

という感じになります。
では、解説していきましょう。

function custom_wpuuf_post_update_notification($post_id){
	$post = get_post($post_id);
}

まずは「custom_wpuuf_post_update_notification」という関数で定義して、引数として投稿ID ($post_id) を受け取るような感じで作成。
これでどの投稿が更新されたかを特定できます。
この「get_post関数」を使って、指定された投稿IDから投稿オブジェクトを取得します。

$to = 'info@example.com';
$subject = '件名が入ります';

メールの送信先アドレス ($to) と件名 ($subject) を設定します。

$nickname = get_user_meta(get_post_field('post_author', $post_id), 'nickname', true);

ここでは差出人名として、ユーザー情報のニックネームを取得して表示する形で設定します。
取得した投稿者IDをから 'nickname' フィールドの値を取得し、投稿者のニックネームします。

$content = get_the_title($post_id);
$siteurl = esc_url(home_url('/'));
$editlink = $siteurl.'wp-admin/post.php?post='.$post_id.'&action=edit';

サイトのURLと組み合わせて投稿の編集リンクを生成します。

$message =<<<EOS
以下のユーザーが投稿を更新しました。
問題がなければ公開状態を確認し、「更新」ボタンを押してください。

▼▼更新記事▼▼
----------------------------------------
ニックネーム:{$nickname}
タイトル:{$content}

■内容の確認
→{$editlink}
----------------------------------------
EOS;

ここでは、ニックネーム、投稿タイトル、編集リンクが含まれた内容でメールメッセージの本文を作成。

wp_mail($to, $subject, $message);

指定されたメールアドレスにメールを送信。
これで投稿が更新された後に実行されるようになります。
ぜひ参考にしてみてください。

この記事が気に入ったらサポートをしてみませんか?