WordPressテンプレートにショートコードを入力するときの注意
WordPressでテンプレートの中にショートコードを入力したいこともあります。活用法はさまざまですが、たとえば、すべての記事の下にContact Form 7の問い合わせフォームを表示することもできるので非常に便利です。
「テンプレート ショートコード」でネット検索すると「do_shortcode」という命令が見つかるかもしれませんが、PHPに慣れていないと編集がうまくいかないこともあります。その仕組みを含めて使い方を簡単に紹介します。
この記事の内容
テンプレートに入力したショートコードがそのまま表示される
すべての記事の下にお問い合わせフォームを表示したい場合、個別記事テンプレート(single.phpなど)のthe_contentの下あたりに、おなじみのContact Form 7のショートコードを入力することを思い付くかもしれません。
ところが、テンプレート内で次のようにショートコードを入力してもうまくいきません。
ショートコードがそのまま表示されてしまいます。
テンプレート内のショートコードにはdo_shortcodeを使う
テンプレートの中でショートコードを使いたい場合、do_shortcodeという命令を使います。次のようなイメージです。
<?php echo do_shortcode('ここにショートコードを入力'); ?>
1行にまとめても大丈夫です。
<?php echo do_shortcode('ここにショートコードを入力'); ?>
基本的にショートコードはシングルクォーテーションの' と ' の間に入力します。Contact Form 7のショートコードで使うイメージは次のようになります。
これで、お問い合わせフォームが表示されるようになります。
do_shortcodeの失敗例
このようにdo_shortcodeを使うとショートコードの内容を画面に表示できますが、PHPの文法を守らないとうまくいきません。以下、失敗例をいくつか紹介します。
do_shortcodeはPHPの開始・終了タグで囲むこと
do_shortcodeはPHPの命令なのでPHPの開始・終了タグで囲む必要があります。次のように裸で入力してもうまくいきません。
<?php the_content(); ?> echo do_shortcode('ショートコード');
正しくはPHPの開始・終了タグで囲みます。
<?php the_content(); ?> <?php echo do_shortcode('ショートコード'); ?>
ショートコードは半角の「'」で囲むこと
ショートコードは文字なので、do_shortcodeで呼び出すときはdo_shortcode('ショートコード')のように半角のシングルクォーテーション「'」で囲む必要があります。次の2つはいずれも間違いです。
echo do_shortcode(ショートコード); echo do_shortcode(’ショートコード’);
1行目はショートコードを「'」で囲んでいません。2行目はショートコードを囲んでいるのは全角の「’」です。このサイトで何度も同じことを書いていますが、本当に紛らわしいので注意してください。シングルクォーテーション「'」は半角で入力です。
do_shortcodeはechoで出力すること
do_shortcodeで指定したショートコードを画面に表示するにはechoを使います。つまり、次のコードはうまくいきません。
<?php do_shortcode('ショートコード'); ?> [php] 正しくは次のようになります。 [php title="" gutter="0"] <?php echo do_shortcode('ショートコード'); ?>
うまくいかないときは、入力したコードを入念にチェックしてみてください。「プラグインのバグ?」など、とんでもない方向に想像をふくらませるのは止めましょう。WordPressトラブルのほとんどの原因は単純な入力ミスです。