WordPressを使っていると、記事の中に [xxx] の形で埋め込むショートコードという形式を使うことがあります。
記事の中にPHPコードを簡単に入れることができて便利ですよね。
ショートコードは、引数なし/あり、両側から囲む/無名関数、それぞれの形式で作れるのでサンプルを作ってみました。
引数なしのショートコード
「Hello WP」をボールドで出力するだけのショートコードです。
function foo1_func() { return "<b>文字列を出力するだけ</b>"; } add_shortcode('foo1', 'foo1_func'); 指定例: [foo1]
returnの戻り値が、ページの中にHTMLの要素として出力されます。
引数のあるショートコード
ショートコードには引数を渡すことができます。
[foo2 num=val]
のようにすると、
変数numに、値valを渡すことができます。
function foo2_func($atts) { extract(shortcode_atts(array( 'top' => 0, 'bottom, => 0, ), $atts)); return "<div style=\"margin-top:{$height}; margin-bottom:{$bottom};\">中の文字</div>"; } add_shortcode('foo2', 'foo2_func'); 指定例 [foo2 top=108]
margin-top:108; (引数で指定)
margin-botom:0;(デフォルトの値)
が代入されます。
両側を挟むショートコード
ショートコードは両側から挟むことができます。
function foo3_func($atts, $content = "") { return "<p>{$content}</p>"; } add_shortcode('foo3', 'foo3_func'); 指定例: [foo3]文字列[/foo3]
両側で挟む:引数あり:ショートコード
ショートコードを両側から囲んで引数がある場合です。
function foo4_func($atts, $content = "") { extract(shortcode_atts(array( 'color' => 'red', ), $atts)); return "<p style:\"color:${color}</p>"{$content}</p>"; } add_shortcode('foo4', 'foo4_func'); 指定例: [foo4 color="blue"]文字列[/foo4]
無名関数を使って省略する場合
add_shortcodeの中でしか使わない関数を定義するのは、無駄だしわかりにくいので、無名関数として定義することもできます。
add_shortcode( 'foo5', function(){ return "<p>文字列</p>"; } ); 指定例: [foo5]
これだとショートカット名(この場合はfoo5)を変更しても、定義関数名を直さなくてもいいですね。
コメント