「解決」Contact Form 7の特別なメールタグが表示されない
症状
Contact Form 7は送信メールの内容をカスタマイズでき、自動で情報を記入してくれるタグが用意されています。
その中で投稿関連の特別なメールタグ[_post_id]、[_post_name]、[_post_title]、[_post_url]、[_post_author]、[_post_author_email]を使ったときに送信メールの内容に出てこず空文字になってしまいました。
特別なメールタグ – Contact Form 7
https://contactform7.com/ja/special-mail-tags/
原因
メールフォーム用のショートコードをテーマファイルに
<?php echo do_shortcode(‘[contact-form-7 id=”10″]’) ?>
のような形で読み込んでいたのですが、投稿のループ外で読み込んでいたので、問題が起きていました。
1 2 3 4 5 6 7 |
<?php while(have_posts()): ?> <?php the_post(); ?> ここにないといけない <?php endwhile;?> ここにあった <?php echo do_shortcode('[contact-form-7 id="10"]') ?> |
送信時に「_wpcf7_container_post」というデータで、どのページからなのかページIDを送っているのですが
ページIDが正しく取得されず、値が「0」となっていました。
それにより
special-mail-tags.php内の
1 2 3 4 5 6 |
$post_id = (int) $submission->get_meta( 'container_post_id' ); if ( ! $post_id or ! $post = get_post( $post_id ) ) { return ''; } |
の処理で空文字が返されていたようです。
解決方法
・管理画面の投稿欄にショートコードを貼り付ける
・テーマファイルに記入する場合は投稿記事のループ内にショートコードを記入する