WordPressでショートコードをPHPテンプレートファイル内で直接使用する方法【do_shortcode関数】

WordPressのショートコードをPHPファイルで使用するには、do_shortcode関数を利用します。ショートコードは、WordPressの投稿、ページ、ウィジェットなどで簡単にコンテンツを挿入するための便利な機能ですが、PHPテンプレートファイル内で直接使用することも可能です。以下に、ショートコードのタイプに応じた具体的な使用方法を解説します。

目次

基本のショートコードの使用方法

基本的なショートコードの使用方法はdo_shortcode関数を使うことです。この関数を使って、ショートコードをPHPファイル内で実行できます。

echo do_shortcode('[your_shortcode]');

echo と組み合わせることで、テンプレート内に直接ショートコードの結果を表示できます。
[your_shortcode]は、使用したいショートコードに置き換えてください。

ショートコードとは?

ショートコードは、WordPressで特定の機能を簡単に呼び出すための短いタグ(独自のマークアップ)のことです。
例えば

エラー: コンタクトフォームが見つかりません。

のように、投稿や固定ページの本文中に記述するだけで、プラグインの機能などを反映させることができます。

通常の投稿エディターで呼び出すときには、ショートコードをそのまま貼り付けるだけでOKです。

テンプレートファイルでショートコードを使えば何ができるか?

  • サイト全体の特定の位置に同じ機能を一括で挿入できる
    例)フッター直前に常にフォームや広告を表示したい
  • 動的なコンテンツを出力したい
    例)ウィジェットエリアやカスタムページテンプレート内で一覧を表示したい
  • PHPの条件分岐を組み合わせて表示制御できる
    例)スマホのときだけ表示したい、特定のカテゴリーのときだけ広告を表示したい

こうしたケースでは、テンプレートファイル内でショートコードを呼び出す方法が便利です。

do_shortcode関数とは?

do_shortcode()は、WordPressが提供する関数のひとつで、ショートコードの文字列を解析し、その結果を返すためのものです。

基本構文

do_shortcode( string $content )

echo do_shortcode('

エラー: コンタクトフォームが見つかりません。

');のようにecho と組み合わせることで、テンプレート内に直接ショートコードの結果を表示できます。

パラメータ付きショートコードの呼び出し例

ショートコードによっては、パラメータを組み合わせて高度な表示切り替えを行う場合があります。例として、カスタムショートコード [my-shortcode slug="example" count="5"] を挿入する場合は、下記のように記述します。

<?php
    // パラメータ付きショートコード
    $shortcode_str = '[my-shortcode slug="example" count="5"]';

    // ショートコードを実行
    echo do_shortcode( $shortcode_str );
?>

パラメータは文字列形式で記述する必要があります。
slug="example" のように " " で囲むのが正しい書き方です。

実装時の注意点・よくあるエラー

プラグインが有効化されていないとショートコードは認識されない

例)Contact Form 7を停止中だと、

エラー: コンタクトフォームが見つかりません。

は機能しません。必ずプラグインが有効化されているか確認しましょう。

テーマファイルを編集する場合は、必ずバックアップを取る

子テーマを作成してから編集するのがベストプラクティスです。

PHP構文エラーに注意

ショートコードを文字列で渡す際に、シングルクォートとダブルクォートが混在してエラーを起こすことがあります。
echo do_shortcode(“[shortcode param=’value’]”); のようにクォートを入れ替えると回避できます。

出力が文字列のままの場合

ショートコードのタグに誤りがないか確認する。

また、テーマや他のプラグインとの競合がないかチェックしましょう。

キャッシュ系プラグインやテーマが干渉する場合

特に動的なコンテンツを表示するショートコードだと、キャッシュプラグインで表示が更新されない可能性があります。キャッシュをクリアして確認しましょう。

まとめ

WordPressのショートコードは、投稿や固定ページの編集画面だけでなく、PHPテンプレートファイル内からもdo_shortcode()関数を使って呼び出すことができます。

  • テンプレート単位で、いつでも同じ機能やコンテンツを表示できる
  • フォームやギャラリーなどを、独自のデザインやレイアウトの中に直接埋め込める
  • 表示制御に条件分岐(if文など)が使いやすい

テーマファイルの編集にはバックアップを取ることをお忘れなく。親テーマではなく子テーマを作成して編集するようにしてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

WordPress開発歴6年。
ベンチャー企業のオウンドメディア開発、中古車検索サイトの開発、WooCommerceを用いたECサイト開発、会員登録機能付きのサイト開発、求人検索サイトの開発など、多くのWordPressサイトを開発してきました。MVPではじめて運用に合わせて拡張保守していくスタイルのアジャイル開発が可能なので、100万円程度のご予算でも新規事業開発を立ち上げることが可能です。

目次