WordPress個別サポート

WordPressのfunctions.phpなどに定義したショートコードをテンプレートの中で呼び出すときは「do_shortcode」を使います。

ただし、ショートコードの仕様によっては次のようにdo_shortcodeで呼び出しても画面に何も表示されない場合があります。

<?php do_shortcode('[showx]'); ?>

その場合、do_shortcodeの前に「echo 」を追加してみてください。

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

「echo」は画面に文字を表示するためのPHPの命令です。ショートコードの内容を画面に表示するときにも使えます。

また、単純ミスの話ですが、次のように角括弧を消してショートコードを呼び出そうとしてもうまくいきません。

<?php do_shortcode('showx'); ?>

前述のように角括弧付きのショートコードを do_shortcodeで呼び出すようにしてください。

スポンサーリンク

WordPressテーマ「LOTUS (TCD039)」

ショートコードの中で「echo」してもうまくいかない

上記のdo_shortcodeで「echo」を省略できるように、functions.phpに定義するショートコードの中でecho(内容を出力)しようと考えないでください。ショートコードの内容は意図しない場所に表示されてしまいます。

同じような理由で、ショートコードの中で、テンプレートを読み込んで表示するget_template_partのような命令を使うとうまくいきません。

たとえば、次のショートコードはテンプレートファイル「show.php」を読み込んで表示しようとしていますが、その内容は意図しない場所に表示されてしまいます。

/* うまくいかないショートコードのget_template_part */
function showx() {
    return get_template_part('show');
}
add_shortcode('showx', 'showx');

その場合、内容をいきなり出力せずにob_startでバッファリングするように設定して、最後にob_get_cleanなどで表示すればうまくいきます。

/* 内容をバッファリングして最後に出力 */
function showx() {
    ob_start(); // バッファを有効に
    get_template_part('show');
    return ob_get_clean(); // バッファを出力
}
add_shortcode('showx', 'showx');

do_shortcodeから話がそれましたが、ショートコードの取り扱いでうまくいかないときの参考にしてください。

この記事をSNSで共有する
WordPressでお困りのときはご相談を
この記事を書いた西沢直木が直接、WordPress個別サポートで対応します。
こんなときはご相談を
  • WordPressの使い方(ページやメニューの作り方を教えてほしい)
  • カスタマイズ(機能の追加やデザイン調整をお願いしたい)
  • トラブル対応(画面真っ白・「ログインできない」を解決したい)
マンツーマンなので相談内容は自由です。いただいた課題をその場で解決、CSSやPHPも目の前で修正します。気軽にご相談ください。
WordPress講座の問い合わせ先

関連記事

BizVektorのカスタマイズ

WordPressカスタマイズ

WordPressによるサイト作成のヒント

WordPressプラグイン

スポンサーリンク
西沢直木によるWordPress講座の紹介
ホームページ作成講座WordPress個別サポート