カスタム投稿タイプの記事が公開された時に通知メールを送信する際、カスタムフィールドに入力した内容を合わせて送信したいです。
wordpressのfunction.phpに以下のコードを入力しました。
新規で記事を投稿した際にはメールは送信され、IDやパーマリンクは送信されるが、カスタムフィールドに入力した内容は空白のまま送信されました。
おそらく"transition_post_status"の関数が動作した後に、カスタムフィールドをデータベースに入力しているため、カスタムフィールドの値が空白で出力されているかと思われます。
試しに既存の記事のIDを"$message .= get_field('カスタムフィールド1','既存の記事のID')"と入力したところ、カスタムフィールドの値が出力されました。
新規投稿でカスタムフィールドの値が出力されるよう何か良い手はないでしょうか?
php
1add_action('transition_post_status', function($new_status, $old_status, $post) { 2 // 新規投稿時且つ、投稿タイプがpostの場合(カスタム投稿でない通常投稿の場合、投稿タイプはpost) 3 if ($new_status == 'publish' && $old_status != 'publish' && $post->post_type == 'sample') { 4 // 送信先のメールアドレス(複数指定可) 5 $to = 'sample@gmail.com'; 6 7 // 件名 8 $subject = '新規投稿がありました'; 9 10 // 本文 11 $message = $post->post_title . "\n"; 12 $message .= $post->ID . "\n"; 13 $message .= get_permalink($post->ID); 14 $message .= "\n"; 15 $message .= get_field('カスタムフィールド1',$post->ID); 16 $message .= "\n"; 17 $message .= get_field('カスタムフィールド2',$post->ID); 18 19 // FromやReply-Toを記述。WordPressの一般設定で設定しているメールアドレスをFromにする場合は空配列。 20 $headers = []; 21 22 // 添付ファイルがあればファイルパスを記述 23 $attachments = []; 24 25 wp_mail($to, $subject, $message, $headers, $attachments); 26 } 27}, 10, 3);
回答2件
あなたの回答
tips
プレビュー