ショートコードの作成・追加方法

ショートコード

非常に便利なワードプレスのショートコードですが、自分のオリジナルショートコードや編集が簡単にできるのをご存知でしょうか?

ショートコードを自動で挿入してくれるプラグインも多く存在し、「Shortcodes Ultimate」といった非常に便利なプラグインも存在しますが、自分である程度自由に作成できるようになっておくと更に柔軟かつ効率の良いコンテンツ作成が可能になります。

ここではそんなワードプレスの基本的なショートコードの作成・追加方法を紹介していきます。

利点としては、HTMLで入力必要がないどころか、PHPの関数処理が行えますので、他の投稿データやメディアなども参照することが出来ますので、他の投稿へのリンクをキーワード検索して出力することも出来てしまうところです。

  • Table of Contents

ショートコードの仕組み

WordPress関数で作成していくのですが、その前に知っておいてほしいことなんですが、このショートコードというのは実はフィルターを利用し、特定の文字列から取得した情報を関数に当て嵌めて作成されます。

[shortcode_example args1="value1" args2="value2"]
[shortcode_example args1="value1" args2="value2"]テキスト[/shortcode_example]

これらがコンテンツに入力するショートコードの文字列の形です。ショートコードの存在を知っているなら、一度くらいは使ったことがあるんじゃないでしょうか? メディアを追加する際、キャプションを入力していると出てくるものもショートコードですので、見る機会は意外と多くあります。。

あとはこの文字列を変換する関数を作成し、ワードプレス関数「add_shortcode( ‘shortcode_example’, ‘function_example’ )」を呼び出すだけで、ショートコード用のフィルターが追加されるという仕組みです。

関数の作成

ショートコードの関数は、上の例で作成したショートコードだと「args1=”value2″」「args2=”value2″」といったコンテンツに入力したショートコード内に与えた引数を、連想配列の形で受け取ることが出来ます。

また、ショートコードで囲う場合、「$content」がショートコードで囲ったテキストとなります。

function function_example( $atts, $content = null ) {

    // ここに処理を書きます。

    // 変換後の値を返す。
    return $return;
}

何かしらの処理を行うだけならともかく、基本的には変換するための関数としてショートコードを使用する場合はエコーするのではなくちゃんと値を返すようにしなくてはいけません。

また、受け取る値の初期値を設定する際は、「shortcode_atts」を使えば、デフォルト値を簡単に設定できますので、「extract」しておけば、インデックスの値をそのまま変数として使用できます。

extract( shortcode_atts( array(
	'args1'     => 'default_value1',
	'args2'     => 'default_value2',
), $atts ) );

あとは、変換後のテキストを上手く返せているなら問題無いでしょう。

テーマに追加する際の注意点

自分で使用するテーマをカスタマイズしてショートコードを追加するだけであれば問題ありませんが、プラグイン「Theme Check」を使用すると、「ショートコードはプラグインに追加すべき機能」だと警告されます。

公式レポジトリで配布するには相応しくないと判断されているんでしょう。

どうしてもチェックして通したい場合、恐らく「the_content」にフックさせたフィルターで変換処理すれば、同じように変換できる筈です。

また、ショートコードのフィルター処理の優先度は「11」となっていますので、Wordpress関数「add_filter」で追加されたフィルターの標準優先度「10」の次に処理されますので、処理される順番を変更したい場合は自分でフィルター関数を作成した方が良いと思います。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください