###前提・実現したいこと
WordPressでAdvancedCustomFieldを使用し、投稿ページにカスタムフィールドを作成しました。
投稿ページに投稿された内容をwp_mailを使い、投稿の公開時に送信されるメール本文に反映したいと考えています。
###発生している問題・エラーメッセージ
投稿IDが取得されず、カスタムフィールドの値がメールに反映されません。
###該当のソースコード
add_action( 'transition_post_status', function( $new_status, $old_status, $post ) { if ( 'publish' == $new_status && 'publish' != $old_status && 'post' == $post->post_type ) { $header = array( 'From: from@example.com' ); $post_id = get_post(); $post_id->ID; $post_id = $post_id->ID; $customfield = get_field('project', $post_id); $message .= "--------------------------------------\r\n"; $message .= $customfield ."\r\n"; $message .= "--------------------------------------\r\n\r\n"; wp_mail( 'to@example.com', $post->post_title, $message, $header ); } }, 10, 3 );
###試したこと
$customfield = get_field('project', $post_id);
この箇所の$post_idに実際の投稿IDを記載した場合、そのIDの該当カスタムフィールドの値は
メール本文に表示されました。
例: get_field('project', 123)
また、$post_idを$message部分にいれたところ、公開したIDの数値が表示されました。
例:$message .= $post_id ."\r\n";
よって投稿IDは取得されており、get_fieldも使用できているようです。
get_field()の$post_idに変数が使用不可ということなのでしょうか。
php初心者のため、基本的な箇所で間違いがありましたら申し訳ございません。
ご指導・ご鞭撻何卒宜しくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
WordPressのバージョン 4.7.3
【追記】
皆さまご教示ありがとうございます。
以前にも試していましたが、その際は表示されない原因が特定できなかったので
改めてこちらの書き方も試してみました。
get_post_meta($post_id, $key, $single);
例:$message = get_post_meta($post_id, 'project', true);
結果としては同じく投稿IDが取得できていないようです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/27 05:24