Categories: PHPWordPress開発

WordPress ショートコードの作り方

ショートコードを作るには、add_shortcode を使う。
たとえば、$_SERVER関数の内容を表示させるショートコードを作る場合、 function.phpなどに、次のように入れる。

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] の内容が表示されます。

ショートコードは、

add_shortcode('get_server', 'get_server_variable');

で追加され、この場合、[get_server]というショートコードがみつかれば、get_server_variable関数が呼び出される。ということを意味します。

で、以下の部分で引数を受け取ります。(引数がない場合は不要です。)

    extract(shortcode_atts(array(
        'var' => '',
    ), $atts));

上の例では、引数varを受け取ります。

受け取った引数varの内容は、$varに保存されるので、たとえば、varの中身がREMOTE_HOSTであれば、$_SERVER[$var]は、$_SERVER[REMOTE_HOST]として、ショートコードと置き換えられます。

return $_SERVER[$var];

 

引数が2つ以上ある場合は、

    extract(shortcode_atts(array(
        'var' => '',
        'type' => 0,
    ), $atts));
    return $_SERVER[$var];

のようにします。

あと、囲みでショートコードを使う場合、たとえばこんな感じ

[get_server var=REMOTE_HOST]####[/get_server]

で、囲みの中を取得したい場合は、次のようにします。

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の中に、囲みの中身(さっきの例だと####)が入っています。
なので、

return $content.$_SERVER[$var].$content;

で、

[get_server var=REMOTE_HOST]####[/get_server]

と表示させることが出います。

nakaike