Contact Form 7のフォームを環境に依存させず表示
所沢市でホームページ制作や欧州の輸入品販売を行っているRishunTradingです。
今回も「Contact Form 7」に関する記事となります。
はじめに
そんなに大した事ではないのですが、「Contact Form 7」で作成したお問い合わせフォームを固定ページなどからショートコードで呼び出す際、「Contact Form 7」で準備されているショートコードは、以下のような形になっています。
1 | [contact-form-7 id="(フォームのID)" title="(お問い合わせフォームのタイトル)"] |
見てわかる通り、フォームのIDの指定が必要になっています。
このフォームのIDは、フォーム作成時にシステムで自動採番されるため、ローカルの開発環境で作成したお問い合わせフォームのフォームIDと、本番環境で作成したお問い合わせフォームのフォームIDが、異なる場合があります(環境に依存してしまっている)。
可能な限り開発環境と本番環境は、合わせておくべきなのですが、このフォームIDが異なってしまうと、メンテナンス性(保守性)が損なわれてしまいます。(ただ、新たに作成せずに丸ごとインポート/エクスポートすれば大丈夫ではあります。)
そこで、今回ご紹介するのは、このフォームのIDを指定しない形で、該当のお問い合わせフォームを呼び出すショートコードについてご紹介させて頂きます。
環境に依存しないショートコード
具体的には、作成したお問い合わせフォームのタイトル自体がユニークな値となるため、IDを指定せずに、タイトルだけで出力するショートコードとなります。
以下の内容をfunctions.phpへ記載頂き、WordPressの固定ページからショートコードで呼び出して頂くだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | //----------------------------------------------------------------- // Contact Form 7で作成したフォームの呼び出し // shortcode:[cf7_insert] // form_title:Contact Form 7で制作したフォームのタイトル //----------------------------------------------------------------- add_shortcode('cf7_insert', 'get_cf7_insert'); function get_cf7_insert($atts){ extract(shortcode_atts(array( 'form_title' => '', ), $atts)); if(empty($form_title)){ return ; //パラメータが無い場合、何もしないで返却 } if(!post_type_exists('wpcf7_contact_form')){ return ; //Contact Form 7が無い場合、何もしないで返却 } //Contact Form 7のpost_type名で、該当タイトルのカスタム投稿を取得 $args = array( 'post_type' => 'wpcf7_contact_form', 's' => $form_title, ); $myposts = get_posts($args); if($myposts): foreach($myposts as $post): setup_postdata($post); $wpcf7_shortcode_command = '[contact-form-7 id="'.$post->ID.'" title="'.$form_title.'"]'; endforeach; else: return ; //なければ何もしないで返却 endif; return do_shortcode($wpcf7_shortcode_command); //Contact Form 7で準備されているショートコードを呼び出す。 } |
固定ページなどでは、以下のような形で呼び出せば利用できます。
1 | [cf7_insert form_title=’(タイトル名)’] |
例えば、フォームのタイトル名に’contact’と付けているのであれば、以下で呼び出せます。
1 | [cf7_insert form_title=’contact’] |
最後に
Contact Form 7は、カスタム投稿のpost_type名が、” wpcf7_contact_form”となります。よって、このカスタム投稿のpost_type名で、該当のタイトルでデータ検索する事で、IDがなくてもフォームのデータを取得する事ができます。
本ショートコードの内部で、Contact Form 7で準備されているショートコードを呼び出す事で、環境に依存しない形で固定ページなどから呼び出す事ができます。
ただし、今後「Contact Form 7」がバージョンアップなどでpost_type名を変更するような場合には、本ショートコードが使えなくなりますので、注意が必要です。
皆さまのお客に立てれば幸いです。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル