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つのショートコードで多様な処理に対応可能になります。
カスタムテンプレートやプラグイン機能と連携すれば、さらに高度な表現も可能になりますので、プロジェクトに合わせて積極的に活用していきましょう。