WordPressのショートコードの登録から複数の引数の受け渡し方法

2019-05-15WordPress

ショートコードの登録と使い方

記事内、カテゴリページやウィジェットでPHPなんかを動かしたい時に利用できるショートコードの使い方です。

ショートコードの登録

WordPressのショートコードを登録する関数add_shortcode()を利用します。
今回はサンプルとしてtest_functionというPHP関数をtestという名前で新規ショートコードとして登録しまてみす。

functions.php

function test_function(){
    ob_start();
    echo 'HELLO WordPress';
    return ob_get_clean();
}

//ショートコードの登録
add_shortcode('test', 'test_function');

add_shortcode()は第一引数にショートコード名、第二引数に実行する関数名を指定します。

サンプルコードの例ではtestというショートコード名が呼び出された時、test_functionが実行されるようになっています。

ショートコードの使い方

記事内、カテゴリページやウィジェット内で登録したショートコードを使う(登録してあるPHP関数を呼び出す)記述です。

[test]

登録されていないショートコード名だった場合はそのまま表示されます。

※ウィジェット内でショートコードを使える様にするにはfunctions.phpに以下を記述しておく必要があります。

//ウィジェットでショートコードを有効化
add_filter('widget_text', 'do_shortcode');

ショートコードから引数を送る

ショートコードから実行する関数に引数を送る場合は以下の様に記述します。因数にはキー名と値を指定します。

[test keyname="こんにちわ"]

ショートコードの関数で引数を受け取る際のシンプルな関数を用意してみます。引数は配列として受け取り格納されている事に注意してください。

function test_function($data){
    ob_start();
    echo $data[keyname];
    return ob_get_clean();
}

//ショートコードの登録
add_shortcode('test', 'test_function');

このままだとキー名が違っていたり、値が空だった場合にPHPエラーとなるので、空だった場合のデフォルト値を指定します。

※キー名に大文字は使えないので注意です。

function test_function($data){
    ob_start();
  extract(shortcode_atts(array(
   'keyname' => 'デフォルト値',
  ), $data));
    echo $keyname;
    return ob_get_clean();
}

//ショートコードの登録
add_shortcode('test', 'test_function');

ショートコードから複数の引数を送る

ショートコードから複数の引数を送信する記述です。半角スペースで開けてキー名と値を指定していきます。

[test keyname1="こんにちわ" keyname2="こんばんわ"]

関数で複数の引数を受け取る場合の記述は以下の様になります。

function test_function($data){
    ob_start();
  extract(shortcode_atts(array(
   'keyname1' => 'デフォルト値1',
   'keyname2' => 'デフォルト値2',
  ), $data));
    echo $keyname1.$keyname2;
    return ob_get_clean();
}

//ショートコードの登録
add_shortcode('test', 'test_function');

PHP: ob_start – Manual

PHP: ob_get_clean – Manual

PHP: extract – Manual

関数リファレンス/add shortcode – WordPress Codex 日本語版

関数リファレンス/shortcode atts – WordPress Codex 日本語版

2019-05-15WordPressWordPressショートコード

Posted by Yousuke.U