こんにちは、ゆうや(@yuyaphotograph)です!
この記事では、
- Contact Form 7をテンプレートファイルに直接埋め込む時に使うショートコードにidとtitleを自動で取得してセットする方法が知りたい
という方のお悩みを解決します!
埋め込みショートコード例
<?php echo do_shortcode( '[contact-form-7 id="30" title="お問い合わせ"]' ); ?>
環境によってid/titleが変わるのがダルい
Contact Form 7で作ったお問い合わせフォームを、テンプレートファイル(page-contact.php等)にショートコードを使って埋め込んでいる方にとって、何よりも面倒くさいことが1つあります。
それは、「フォームのidとtitleが環境によって異なる」ということです!
当たり前ですが、正直ダルい。
ローカル環境で実装
▼▼
テスト環境で実装
という流れでぼくは普段Contact Form 7をやっているのですが、ローカル環境とテスト環境でid/titleが異なるため、別々でidを書き換えなきゃならんのです。
とても面倒くさいので、自動で取得してセットしてくれるようにするにはどうしたらよいかな、とググっていた時に偶然以下の記事を発見!
【WordPress】Contact Form 7をテンプレート内で表示する
まさに、ぼくが求めていたTipsが書かれていました!
と、思いきやそのコードをそのままコピペしてもエラーで表示されなかったので少し修正してみたらうまくいきました。
それでは以下でコードを紹介します。
ショートコードのidとtitleを自動取得する方法
結論。こちらのコードをお使いください。
idとtitleを自動取得するコード
<!-- 変数に代入 -->
<?php $get_form = get_posts(array('post_type' => 'wpcf7_contact_form', 'posts_per_page' => -1))[0]; ?>
<!-- フォームの中身 -->
<div class="Form">
<?php echo do_shortcode( '[contact-form-7 id="'.$get_form->ID.'" title="'.$get_form->post_title.'"]' ); ?>
</div>
Contact Form 7のpost_typeは「wpcf7_contact_form」だったとは知らなかったのでこれまた発見で面白かったです笑
まとめ
以上、WordPressのプラグイン「Contact Form 7」で作ったフォームのidとtitleを自動取得してセットする方法を紹介しました。
今までいちいち書き換えていた方は、ぜひお試しあれ。
wpcf7ライフがよりハッピーなものになるでしょう!