【Advanced Custom Fields】でContact Form 7のショートコードを入れる方法を書きたいと思います。
はじめに
そもそも【Advanced Custom Fields】でContact Form 7のショートコードを入れたいと思うようなシチュエーションですが、店舗一覧などがあり、各店舗ごとにお問い合わせフォームを設置したいとします。ただその場合、投稿もしくは固定ページの本文欄にショートコードを入れれば全く問題なくショートコードが機能しますよね。
サンプルのテーマは【STINGER8】です。
ちなみに【Advanced Custom Fields】で住所や電話番号などのフィールドを作っていて、お問い合わせフォームは最後に表示させたいんだけど・・という場合は、単純に使っているテーマの<?php the_content(); ?>の前に【Advanced Custom Fields】のフィールドを出力すれば順番も問題ないと思います。
でも入力はすべて【Advanced Custom Fields】を使い、本文欄を非表示にしたい場合もあると思います。
クライアントが修正などをする際に、入力欄をわかりやすくするために、本文欄を表示させたくないということもあると思います。
その際に、フィールドでショートコードを使いたいんだけど・・・という話になると思います。
普通にショートコードを入れてもショートコードが表示される
試しにフィールドを作ってショートコードを入れてみます。
フィールドラベル*:お問い合わせフォーム
フィールド名*:contact
フィールドタイプ*:テキスト
フォーマット:Convert HTML into tags
投稿ページにフィールドが表示されますので、Contact Form 7のショートコードを入れます。
※サンプルでは店舗名とか住所などもフィールドを作っておりますが、こちらは任意で。
実際にはこういった情報も【Advanced Custom Fields】に入れると思いますので、例ということで入れています。
出力は、普通に
<?php if( get_field('contact') ) { ?> <?php the_field('contact'); ?> <?php } ?>
とします。
【Advanced Custom Fields】の基本的な使い方は下記でも記事にしています。
投稿ページなので、single.phpに出力の命令を入れます。【STINGER8】ですとsingle.phpの80行目あたりに<?php the_content(); ?>がありますので、その前後のどちらかに入れます。
確認でページを見ますと、テキストエリアに入れたContact Form 7のショートコードがそのまま表示されてしまっています。
ショートコードを機能させる方法
【Advanced Custom Fields】でContact Form 7のショートコードを表示させるには2つ方法があります。
Wysiwyg エディタを使う
わりと単純で簡単な方法ですが、フィールドの入力の選択で Wysiwyg エディタを選べばショートコードを出力することができます。
さきほどの設定でフィールドタイプ*をWysiwyg エディタにします。
フィールドラベル*:お問い合わせフォーム
フィールド名*:contact
フィールドタイプ*:Wysiwyg エディタ
フォーマット:Convert HTML into tags
とします。
投稿ページを見ると、下記のような入力欄になっています。そこにショートコードを入れます。
ページを見ると、お問い合わせフォームが表示されていると思います。
フィールドタイプ*:テキストを使い出力方法を変える
もうひとつの方法は、テキストを使いますが、上記で設定したものと違う命令で出力する方法です。
実際にやってみます。
最初にショートコードが表示されてしまいましたが、フィールドタイプ*:テキストに戻します。
フィールドラベル*:お問い合わせフォーム
フィールド名*:contact
フィールドタイプ*:テキスト
フォーマット:Convert HTML into tags
投稿ページにフィールドが表示されますので、Contact Form 7のショートコードを入れます。
出力は
<?php if( get_field('contact') ) { ?> <?php the_field('contact'); ?> <?php } ?>
と入れていたものを下記に変えます。
<?php if( get_field('フィールド名') ) { ?> <?php echo apply_filters('the_content', get_post_meta($post->ID, 'フィールド名', true)); ?> <?php } ?>
今回はフィールド名がcontactなので、contactを入れます。
<?php if( get_field('contact') ) { ?> <?php echo apply_filters('the_content', get_post_meta($post->ID, 'contact', true)); ?> <?php } ?>
ページを見ると、お問い合わせフォームが表示されていると思います。
まとめ
こうやって設定すれば、ショートコードも【Advanced Custom Fields】では機能させることができます。
どちらを使っても同じようにお問い合わせのフォームを表示させることができますが、見映え的には、「テキスト」のほうが美しいかなとは思います。お問い合わせフォームの下に※など文章を追加したりなどという場合は、「Wysiwyg エディタ」を使ってもよいかと思います。
ちなみに当然Contact Form 7以外でも自分で設定したショートコードなども使うことができると思いますので、何か他のショートコードを使いたい時も同じようにすれば出力できると思います。
コメントをどうぞ