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で呼び出すようにしてください。

スポンサーリンク

ショートコードの中で「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から話がそれましたが、ショートコードの取り扱いでうまくいかないときの参考にしてください。

WordPressでお困りのときはご相談を
細かい質問からCSSやPHPのカスタマイズ、トラブル対応まで、この記事を書いた西沢直木が直接、WordPress個別サポートで対応します。
WordPress個別サポートの特徴
  • 最短で本日中に問題解決できます
  • 見積もり無料・料金は終了後の後払いです
  • 銀座教室・スカイプ・出張またはメールで対応します
トラブル解決でお急ぎのときは
お急ぎのときはWordPressメールサポートで対応します。ご活用ください。
こんなときはご相談ください(相談・見積もり無料)
  • ログインできなくなった
  • 画面が真っ白(500エラー)になった
  • 間違ってサイトを消してしまった
  • 引っ越し・SSL対応がうまくいかない
  • CSS・PHPのカスタマイズがうまくいかない
WordPress講座の問い合わせ先
WordPress講座申し込み
メールで問い合わせ

関連記事

スポンサーリンク