WordPressでは、新規投稿時に通知メールを送る機能は標準で用意されていますが、既存の投稿が更新されたときにメール通知を行う機能はありません。運営チームで複数人が管理しているサイトや、編集者がコンテンツを頻繁に更新する場合、更新の都度通知を受け取ることで、コンテンツ管理の精度を高めることができます。
投稿更新時にフックされるアクション
WordPressでは、投稿が更新される際に post_updated
アクションが実行されます。これを利用して、更新時にメール通知を送信する処理を追加できます。
functions.phpへのコード追加例
以下のコードをテーマの functions.php
に追加することで、投稿が更新されるたびに管理者へ通知メールが送信されるようになります。
function notify_admin_on_post_update($post_ID, $post_after, $post_before) {
// 下書き保存などの場合はスキップ
if ($post_after->post_status !== 'publish') {
return;
}
// 新規投稿の場合もスキップ(IDが変わらないが、古い投稿はnull)
if ($post_before->post_status === 'auto-draft') {
return;
}
// 更新者の情報取得
$current_user = wp_get_current_user();
// 管理者への通知内容
$subject = '【通知】投稿が更新されました';
$message = "投稿タイトル: " . $post_after->post_title . "\n";
$message .= "投稿URL: " . get_permalink($post_ID) . "\n";
$message .= "更新者: " . $current_user->display_name . "(" . $current_user->user_email . ")\n";
$message .= "更新日時: " . current_time('Y-m-d H:i:s');
// 管理者メールアドレスに送信
wp_mail(get_option('admin_email'), $subject, $message);
}
add_action('post_updated', 'notify_admin_on_post_update', 10, 3);
メールの送信対象を変更したい場合
上記のコードでは、WordPressの管理者メールアドレス(admin_email
)に送信されますが、特定のメールアドレスに変更したい場合は、以下のように直接指定できます。
// 変更前
wp_mail(get_option('admin_email'), $subject, $message);
// 変更後(特定のアドレスに送信)
wp_mail('example@example.com', $subject, $message);
投稿タイプやユーザー権限で通知条件を絞る
特定の投稿タイプだけに通知したい場合は、$post_after->post_type
で条件分岐することも可能です。また、特定の権限以上のユーザーによる更新のみ通知するなど、柔軟な制御も可能です。
if ($post_after->post_type !== 'post') {
return; // 通常投稿以外はスキップ
}
まとめ
WordPressにおいて投稿の更新をトリガーに通知を送ることで、管理の見落としを防ぐことができます。今回紹介した post_updated
フックを活用すれば、簡単に通知機能を実装できるので、複数人で運営するサイトやクライアント向けサイトにぜひ活用してみてください。