[WordPress] ウィジェットやテンプレート、カスタムフィールドなどいろいろな場所でショートコードを実行する

こんにちは。@kasumiiです。

ショートコードをWordPressのテンプレート内やウィジェット内で実行したいときなど、記述方法が少し変わってくるのでそれぞれの方法をメモしてみます。

以前つくったショートコードのサンプルは以下。
URLを指定してサイトのスクリーンショットを表示するショートコード(WordPress.comのAPIを使用)

一番よく使う表示方法です。投稿記事の本文中に、

[shortcode]

と書けば、ショートコードを実行した結果が表示されます。

投稿記事内ではそのままショートコードを書けばOKでしたが、テンプレート(テーマ)ファイル内にショートコードを書く場合は、do_shortcode関数を使って以下のように記述します。

<?php echo do_shortcode('[shortcode]'); ?>

functions.php の中に以下のように記述すれば、サイドバーなどのウィジェット内でショートコードが実行されるようになります。

add_filter('widget_text', 'do_shortcode');

ちょっと複雑な使い方ですが、カスタムフィールド内でショートコードを実行したい場合。

ショートコードの実行結果を表示したい部分に以下のコードを記述します。(single.php などのテーマファイルの中に書けばOK)

カスタムフィールド名の部分は、ショートコードを入れるカスタムフィールドの名前に書き換えてください。

<?php echo apply_filters('the_content', get_post_meta($post->ID, 'カスタムフィールド名', true)); ?>

【参考】Execute shortcode in custom field | The Code Collective

ショートコードの説明記事などを書きたいときに、ショートコードを普通に書いてしまうと実行結果が表示されてしまいます。

そんなときは、大カッコ(ブラケット)を2重に記述すればOKです。

[[shortcode]]

投稿記事の中で、以下のようにショートコード名そのものが表示されます。

[shortcode]