<?php add_action('post_updated', function($post_ID, $post_after, $post_before) { //ユーザー一覧の取得 $blogusers = get_users('role=subscriber'); // post_ID:1006 if ($post_ID == 1006) { foreach ( $blogusers as $user) { $to_mail = ($user -> user_email); // 送信先のメールアドレス(複数指定可) $to = $to_mail; // 件名 $subject = '新しい記事が公開されました'; // 本文 $message = $post_after->post_title . "\n"; //更新後の固定ページタイトル $message .= get_permalink($post_ID) . "\n"; //固定ページのURL $message .= "上記リンクから最新ページにアクセス可能です。"; // FromやReply-Toを記述。WordPressの一般設定で設定しているメールアドレスをFromにする場合は空配列。 $headers = 'From: 〇〇株式会社 <example@outlook.com>' . "\r\n"; // 添付ファイルがあればファイルパスを記述 $attachments = []; wp_mail($to, $subject, $message, $headers, $attachments); }; }; }, 10, 3);
Wordpressで会員制サイトを構築中です。
上記のコードをwordpressの子テーマfunction.phpに記述して、指定の固定ページが更新されたときに登録ユーザーに対してメール自動配信をする機能を実装しています。
メール自体はページ更新時に配信されるようにはなったのですが、何故かメールが必ず2通届いてしまいます。。
$to部分にメールアドレスを直接記載してみたり、mb_send_mailを使ってみたりしてみたのですが、どの場合も必ず2回メールが届いてしまいます。
原因不明なのですが、過去に同じような経験をした方がいればと思い質問させていただきました。
よろしくおねがいします。
ご回答いただいた方法で少しコードを書き直しましたので再投稿致します。
現状はまだ2回送信されています。
wordpressのwp mail logging で送信ログを確認したところ2回同じメールアドレスに送信がされていることが確認できました。
<?php function my_post_updated($post_ID, $post_after, $post_before) { //ユーザー一覧の取得 $blogusers = get_users('role=subscriber'); // post_ID:1006 if ($post_ID == 1006 && $post_type = 'page') { foreach ( $blogusers as $user) { $to_mail = ($user -> user_email); // 送信先のメールアドレス(複数指定可) $to = $to_mail; // 件名 $subject = '新しい記事が公開されました'; // 本文 $message = $post_after->post_title . "\n"; //更新後の固定ページタイトル $message .= get_permalink($post_ID) . "\n"; //固定ページのURL $message .= "上記リンクから最新ページにアクセス可能です。"; // FromやReply-Toを記述。WordPressの一般設定で設定しているメールアドレスをFromにする場合は空配列。 $headers = []; // 添付ファイルがあればファイルパスを記述 $attachments = []; if(did_action('post_updated') == 1){ wp_mail($to, $subject, $message, $headers, $attachments); } remove_action('post_updated','my_post_updated',10); }; }; }; add_action('post_updated','my_post_updated',10,3);

回答2件
あなたの回答
tips
プレビュー