WordPress プラグイン “Hello Dolly” はなにをやっているの?


WordPress のプラグイン “Hello Dolly” が何をやっているのか、 PHP のコードを追って調べてみました。

WordPress プラグイン Hello Dolly とは

WordPress に標準で入っているプラグインで、 管理画面に ルイ・アームストロング の歌の歌詞の一節をランダムに出してくれます。

WordPress のプラグインの説明には、 次のように記載されています。

これは単なるプラグインではありません。Louis Armstrong が歌った最も有名な二つの単語「Hello, Dolly」に要約された、世代全体の希望と熱意を象徴しているのです。このプラグインを有効化すると、すべての管理画面の右上に Hello, Dolly からの歌詞がランダムに表示されます。

“Hello Dolly” のソースコードから挙動を読み取る

“Hello Dolly” で使っている PHP ファイル はわずかひとつです。 プラグインの学習も兼ねて読んでみましょう。

ファイル冒頭に、コメントで Plugin Name, Plugin URI, Description, Author, Version, Author URI を記述しています。 最低でも Plugin Name はプラグインに必要です。

このファイル内に関数は3つあります。 hello_dolly_get_lyric, hello_dolly, dolly_css の3つです。

hello_dolly_get_lyric

“Hello Dolly” の歌詞から1行を選んで返す関数です。 mt_rand でランダムにインデックスを取得して使っていますね。 wptexturize はテキストを WordPress のフォーマットに合わせる関数で、 WordPress 5 でも使えます。

歌詞の中には “Dolly’ll never go away” という行が2行あります。 ほかにも同じ行は複数ありますね。 mt_rand でランダムに行を出力していますが、 重複行を取り除いていませんので、 それらの重複する行は選ばれる確率が高いことになります。

hello_dolly

hello_dolly_get_ryric から1行取り出して HTML にして表示する関数です。 これによって返される HTML が WordPress のページに表示されます。 p タグ の id 属性 は dolly になっています。

hello_css

表示するメッセージに適用する CSS を style タグ のコンテンツとして表示する関数です。 is_rtl は使用している言語が右寄せなのか左寄せなのかを判定する関数で、 使用言語にあわせて表示を調整しているのがわかります。

これらの関数定義の他に、ファイル内では2つのアクションが追加されています。

add_action('admin_notices', 'hello_dolly');

アクションイベント admin_noticehello_dolly を実行するように指定しています。 admin_notice は 管理画面の通知エリアの表示タイミングを指しており、 「プラグインを有効化しました」などのメッセージもこのアクションで表示されています。

add_action('admin_head', 'dolly_css');

アクションイベント admin_headdolly_css を実行するように指定しています。 admin_head は管理画面を開くときの head タグ 生成時のイベントで、 ここで出力するテキストは head タグ 内 に出力されます。

プラグインを発展させる

シンプルなプラグインの使い方がわかったところで、コードを変更して新しくプラグインができないか考えてみましょう。

たとえば日付にあわせてまいにち、修造! 心を元気にする本気の応援メッセージ のメッセージを表示させるのも面白そうですね。

PHP で日付を取得するには次のようにします。 東京のタイムゾーンで日付を取得します。