ショートコードの作り方

プラグインとして作成

WordPressショートコードは、プラグインの一種ですが、投稿出力の整形のみを扱うため、通常のプラグインと比較して作成しやすいです。

ショートコードプラグインの例

ショートコードプラグインは、関数定義部分と、関数呼出部分とに分けられます。 簡単な例で説明します。

function integral_output_func( $atts, $content = null ) {
    extract( shortcode_atts( array(
                                 'from' => '0',
                                 'to' => '1',
                                 ), $atts ));
    return '&int;<sub>' . $from . '</sub><sup>' . $to . '</sup>' . $content ;
}

add_shortcode( 'integral', 'integral_output_func' );

上記コードは、定積分(積分記号と範囲)を指定するタグを定義しています。 投稿記事中で下のように記述すると、画面表示は、∫abf(x)dx のようになります。

[integral from="a" to="b"]f(x)dx[/integral]

ショートコード関数では、当然ですがPHPが利用できます。 下の例では、ログインしたユーザーかどうかを判定しています(ログイン中のみ、投稿画面でショートコードタグで括った部分$contentを表示する)。

function loggedin_func( $atts, $content = null ) {
    extract( shortcode_atts( array(
                                 ), $atts ));
    if( is_user_logged_in() ) {
        return $content ;
    } else {
        return "You are not logged in.";
    }
}

add_shortcode( 'loggedin', 'loggedin_func' );

記事投稿画面では下のように記入します。 この部分はログインしたユーザーがアクセスした時のみ表示されます。

[loggedin]会員限定情報[/loggedin]

ショートコード属性は必須ではないので、この例ではショートコード属性がありません。 ただし、関数定義では、$attsを空配列として定義しておく必要があります。

ショートコードプラグインの作り方

関数定義部分は、上の例でintegral_output_funcとなっている部分です。 引数は、$atts(タグに振る属性)と、$content(タグで囲まれる部分)があり、記事入力時にはどちらも省略可能です。

shortcode_attsという関数は、$attsで受け入れる属性名とそのデフォルト値を設定しています。最初の引数は「属性名」「デフォルト値」の連想配列で、2番めの引数(必須)はショートコードハンドラから受け取る生データです。 この関数は、余計な属性を破棄し、必要な属性が欠如しているときはデフォルト値を補充します。

$contentも省略可能で、省略する場合は記事投稿時に閉じタグ(上の例では[/integral])は不要です。 $content = null(1行目)はデフォルト値を設定しています。

extract(2行目)は、(属性を変数名に、値を変数の値として)ローカル変数に格納する命令です。

関数呼出は、add_shortcodeを用います。最初の引数は記事投稿画面で使用するショートコード名、2番目の引数は定義した関数名です。

ショートコード名

ショートコード名と属性名は、自由につけることができます。 上の例のように、ショートコード名をintegral(積分)とし、属性名をfromtoとすると、どういうショートコードか理解しやすく、表記も覚え易くなります。

なお、既存の関数名と同じ名前を付けることはできません。 もし同じ名前を付けた場合、後から定義したショートコードが有効になります。 既存のショートコードは、配列$shortcode_tagsに格納されています。

画面表示時に適用

ショートコード関数による整形は、画面表示時に適用されます。投稿データベースにはショートコードタグの状態で保存されています。

このため、ショートコードの出力フォーマットを変更すると、既存の記事のHTML出力も変更後のものになります。 またショートコードを削除した(無効化)場合、ショートコードタグがそのまま表示されます。

インストール

通常のプラグイン同様、wp-content/pluginsディレクトリに設置します。 ログイン後、管理画面から有効化を選択します。

Copyright (C) 2008-2011. さくらインターネットでWordPress All rights reserved.