ショートコードの作り方
プラグインとして作成
WordPressショートコードは、プラグインの一種ですが、投稿出力の整形のみを扱うため、通常のプラグインと比較して作成しやすいです。
ショートコードプラグインの例
ショートコードプラグインは、関数定義部分と、関数呼出部分とに分けられます。 簡単な例で説明します。
function integral_output_func( $atts, $content = null ) {
extract( shortcode_atts( array(
'from' => '0',
'to' => '1',
), $atts ));
return '∫<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(積分)とし、属性名をfrom、toとすると、どういうショートコードか理解しやすく、表記も覚え易くなります。
なお、既存の関数名と同じ名前を付けることはできません。 もし同じ名前を付けた場合、後から定義したショートコードが有効になります。 既存のショートコードは、配列$shortcode_tagsに格納されています。
画面表示時に適用
ショートコード関数による整形は、画面表示時に適用されます。投稿データベースにはショートコードタグの状態で保存されています。
このため、ショートコードの出力フォーマットを変更すると、既存の記事のHTML出力も変更後のものになります。 またショートコードを削除した(無効化)場合、ショートコードタグがそのまま表示されます。
インストール
通常のプラグイン同様、wp-content/pluginsディレクトリに設置します。 ログイン後、管理画面から有効化を選択します。