前提・実現したいこと
Wordpressで投稿された記事のカテゴリーを取得し、カテゴリーごとにユーザーにメールで通知したい
発生している問題・エラーメッセージ
https://www.villness.com/3079 こちらを参考にしましたが毎回取得するカテゴリーが同じになってしまいます。
下がカテゴリー一覧だとすると(他にもありますが)記事ID1のnewsしか毎回持ってきません。
投稿を更新した場合はその投稿のカテゴリーを持ってきているようです。
イベント event お知らせ news
該当のソースコード
add_action('transition_post_status', function($new_status, $old_status, $post) { // 新規投稿時且つ、投稿タイプがpostの場合(カスタム投稿でない通常投稿の場合、投稿タイプはpost) if ($new_status == 'publish' && $old_status != 'publish' && $post->post_type == 'post') { //現在表示されているカテゴリーアーカイブページのカテゴリー情報を取得 $cat = get_the_category($post->ID); //上記カテゴリーのスラッグを取得→出力 $catSlug = $cat[0]->category_nicename; $subject = "投稿されました"; // 送信先のメールアドレス(複数指定可) $to = 'メアド'; // 本文 $message = $catSlug . "\n"; $message .= get_permalink($post->ID); // FromやReply-Toを記述。WordPressの一般設定で設定しているメールアドレスをFromにする場合は空配列。 $headers = []; // 添付ファイルがあればファイルパスを記述 $attachments = []; wp_mail($to, $subject, $message, $headers, $attachments); } }, 10, 3);
試したこと
$message .= get_permalink($post->ID);
上記の時点で投稿のリンクはしっかり持ってきているのでpostからIDは持ってきているとは思います。
get_the_categoryが悪いのかなと思い以下のようにしましたが既にある記事を指定した場合はしっかりデータを持ってきていました
$cat = get_the_category(既にある投稿ID);
該当のソースコードのようにすると駄目なようです。。
またプラグインの「Subscribe2」を使って通知させようとしましたが、カテゴリーの「news」を選択しておかないとメール通知がきませんでした。
このことから、2つのやり方で試しましたが新規で制作した際に毎回カテゴリーが同じになってしまっていてるように感じます。
他プラグインなど無効化してみましたが、効果なしでした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
Wordpress: 5.7.2
使用しているテーマ: Twenty Twentyバージョン: 1.7
該当のソースコードは投稿のカテゴリーを取得してメールに表示させるだけにあえてしていますのでカテゴリーで分岐させるなどのご指摘は大丈夫です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。