このページの本文へ

面倒な処理を1行に!WordPressのショートコードAPI (2/2)

2009年02月25日 06時00分更新

文●藤本 壱

  • この記事をはてなブックマークに追加
本文印刷

ショートコードのプラグインはこうして書く!

 ショートコードのプラグインは、比較的簡単に作れます。たとえば、前のページで紹介したloopショートコードのプラグインは、以下のようになります。


<?php
/*
Plugin Name: Loop
Plugin URI: http://www.h-fj.com/blog/
Description: 同じ単語を繰り返し出力します。
Author: Hajime Fujimoto
Version: 1.0
Author URI: http://www.h-fj.com/blog/
*/
function loop_func($atts) {
    // 属性の値を得る
    extract(shortcode_atts(array(
        'word' => '', 'times' => 1
    ), $atts));
    // HTMLを生成する
    for ($i = 0; $i < $times; $i++) {
        $html .= $word;
    }
    // 結果を出力する
    return $html;
}
add_shortcode('loop', 'loop_func');
?>

 前半のコメントの部分(1~9行目)は、プラグインの名前や作者名などの情報をWordPressのプラグインの管理画面に表示するためのもの。後半のPHPのコードが、プラグインの本体です。

 まず、ショートコードの処理を行なうために、ハンドラの関数を作ります。この関数には、パラメータとして、ショートコードに指定した属性(「word="こんにちは!"」など)の情報が渡されます。パラメータは「$atts」という変数で受け取るようにします(11行目)。

 これらの属性は、「shortcode_atts」というAPIで、属性名と同名の変数に代入することができます(13行目)。また、shortcode_atts APIに属性のデフォルト値を渡すこともできます。上のリストでは、word属性のデフォルト値は空文字にし、times属性のデフォルト値は1にしています(14行目)。

 そして、属性の値を利用して出力するHTMLを組み立て(17~19行目)、そのHTMLをハンドラ関数の戻り値とします(21行目)。

 最後に、「add_shortcode」というAPIを使って、ショートコードの名前(今の例なら「loop」)と、そのショートコードのハンドラ関数(上のリストでは「loop_func」)を、WordPressに登録します(24行目)。

 上記のPHPのコードを、文字コードをUTF-8にして適当なファイル名(「loop.php」など)で保存し、WordPressの「wp_content」→「plugins」ディレクトリにアップロードします。あとは、管理画面の「プラグイン」メニューからプラグインを有効化すれば、ショートコードを使えるようになります。


ショートコードAPIを利用したプラグイン

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

をかもと氏作の「Google Maps Anywhere」

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

筆者作の「カスタムフィールドのHTMLを記事に挿入するプラグイン」

 ショートコードAPIを利用したプラグインは、いろいろとリリースされています。たとえば、Googleマップをブログに貼り付ける「Google Maps Anywhere」というプラグインがあります(をかもと氏作)。

http://wppluginsj.sourceforge.jp/googlemaps-anywhere/

 また、筆者は「カスタムフィールドのHTMLを記事に挿入するプラグイン」を公開しています。WordPressに入力したテキストは、通常、改行が<br />に置き換わったり、自動整形した状態で表示されますが、HTMLやJavaScriptをそのまま入力したい場合、これでは困ります。このプラグインでは、カスタムフィールドに入力したHTMLコードをそのまま実行できるようにするものです。

http://www.h-fj.com/blog/archives/2009/02/10-095426.php


 ショートコードAPIに関する詳しい情報は、WordPress Codexの以下のページにあります。このページを参照して、ショートコードAPIを使ったプラグイン作りにチャレンジしてみてはいかがでしょうか。

http://wpdocs.sourceforge.jp/%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89_API

前へ 1 2 次へ

Web Professionalトップへ

この記事の編集者は以下の記事をオススメしています