2019.04.10 - Note

「解決」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″]’) ?>
のような形で読み込んでいたのですが、投稿のループ外で読み込んでいたので、問題が起きていました。

<?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内の

	$post_id = (int) $submission->get_meta( 'container_post_id' );

	if ( ! $post_id
	or ! $post = get_post( $post_id ) ) {
		return '';
	}

の処理で空文字が返されていたようです。

解決方法

・管理画面の投稿欄にショートコードを貼り付ける
・テーマファイルに記入する場合は投稿記事のループ内にショートコードを記入する

コメントを残す