【WordPress】ショートコードにパラメータを渡して動的な出力を実現する方法

【WordPress】ショートコードにパラメータを渡して動的な出力を実現する方法 WordPress

WordPressのショートコードは、記事や固定ページ内に簡単なHTMLやPHPの出力を挿入するための強力な機能です。さらに、ショートコードにパラメータを渡すことで、より柔軟で動的なコンテンツ表示が可能になります。この記事では、パラメータ付きショートコードの作成方法と、実用的な使い方を解説します。

ショートコードにパラメータを渡す基本構文

ショートコードにパラメータを指定する場合、次のように記述します。

[greeting name="Taro" times="3"]

このように属性として name や times を指定することで、関数内でその値を取得して出力に利用できます。

ショートコードをfunctions.phpに追加する

以下のコードを functions.php に追加してください。パラメータで指定した名前を複数回出力するショートコードです。

function shortcode_greeting($atts) {
  // パラメータの初期値を定義
  $atts = shortcode_atts(array(
    'name' => 'ゲスト',
    'times' => 1,
  ), $atts, 'greeting');

  $output = '';
  for ($i = 0; $i < intval($atts['times']); $i++) {
    $output .= '<p>こんにちは、' . esc_html($atts['name']) . 'さん!</p>';
  }

  return $output;
}
add_shortcode('greeting', 'shortcode_greeting');

使用例と出力結果

記事内で以下のように記述すると、

[greeting name="さくら" times="2"]

以下のような出力になります。

<p>こんにちは、さくらさん!</p>
<p>こんにちは、さくらさん!</p>

応用:投稿IDを指定してタイトルを表示するショートコード

次は、投稿IDをパラメータで受け取り、該当投稿のタイトルを表示するショートコードの例です。

function show_post_title($atts) {
  $atts = shortcode_atts(array(
    'id' => '',
  ), $atts, 'show_title');

  $post_id = intval($atts['id']);
  if (!$post_id || !get_post($post_id)) {
    return '<p>投稿が見つかりません。</p>';
  }

  return '<p>タイトル:' . esc_html(get_the_title($post_id)) . '</p>';
}
add_shortcode('show_title', 'show_post_title');

このように記述すると、

[show_title id="123"]

該当IDの投稿タイトルが出力されます。

まとめ

ショートコードにパラメータを渡すことで、再利用性の高い柔軟な出力が実現できます。表示回数や投稿ID、カテゴリ名などをパラメータとして受け取ることで、1つのショートコードで多様な処理に対応可能になります。

カスタムテンプレートやプラグイン機能と連携すれば、さらに高度な表現も可能になりますので、プロジェクトに合わせて積極的に活用していきましょう。