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

2019年2月15日ショートコード

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

ショートコードの登録

WordPressのショートコードを登録する関数add_shortcode()を利用します
test_functionというPHP関数をtestという名前で新規ショートコードとして登録します

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

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

ショートコードの使い方

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

[test]

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

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

ショートコードから実行する関数に因数を送る場合は以下の様に記述します

因数にはキー名と値を指定します

[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年2月15日ショートコード

Posted by Yousuke.U