ショートコードを作るには、add_shortcode を使う。
たとえば、$_SERVER関数の内容を表示させるショートコードを作る場合、 function.phpなどに、次のように入れる。
1 2 3 4 5 6 7 |
function get_server_variable($atts) { extract(shortcode_atts(array( 'var' => '', ), $atts)); return $_SERVER[$var]; } add_shortcode('get_server', 'get_server_variable'); |
で、[getserver var=REMOTE_HOST] といれてやると、$_SERVER[REMOTE_HOST] の内容が表示されます。
ショートコードは、
1 |
add_shortcode('get_server', 'get_server_variable'); |
で追加され、この場合、[get_server]というショートコードがみつかれば、get_server_variable関数が呼び出される。ということを意味します。
で、以下の部分で引数を受け取ります。(引数がない場合は不要です。)
1 2 3 |
extract(shortcode_atts(array( 'var' => '', ), $atts)); |
上の例では、引数varを受け取ります。
受け取った引数varの内容は、$varに保存されるので、たとえば、varの中身がREMOTE_HOSTであれば、$_SERVER[$var]は、$_SERVER[REMOTE_HOST]として、ショートコードと置き換えられます。
1 |
return $_SERVER[$var]; |
引数が2つ以上ある場合は、
1 2 3 4 5 |
extract(shortcode_atts(array( 'var' => '', 'type' => 0, ), $atts)); return $_SERVER[$var]; |
のようにします。
あと、囲みでショートコードを使う場合、たとえばこんな感じ
[get_server var=REMOTE_HOST]####[/get_server]
で、囲みの中を取得したい場合は、次のようにします。
1 2 3 4 5 6 7 |
function get_server_variable($atts,$content='') { extract(shortcode_atts(array( 'var' => '', ), $atts)); return $content.$_SERVER[$var].$content; } add_shortcode('get_server', 'get_server_variable'); |
$contentの中に、囲みの中身(さっきの例だと####)が入っています。
なので、
1 |
return $content.$_SERVER[$var].$content; |
で、
[get_server var=REMOTE_HOST]####[/get_server]
と表示させることが出います。