WordPress最古のプラグイン「Hello Dolly」のソースコードを読み解く — 小さなコードに詰まった設計思想

執筆者:

カテゴリ:

WordPressを触ったことがある人なら、一度は見たことがある「Hello Dolly」。

管理画面の右上に突然表示される歌詞――
正直、実用性はほぼありません。

しかしこのプラグイン、WordPressのプラグイン開発思想そのものを示すサンプルコードとして作られています。

今回は、WordPress史上最初のプラグイン Hello Dolly の実際のソースコードを読み解きながら、

  • WordPressプラグインはどう動くのか
  • Hooks(フック)の基本構造
  • WordPressらしい設計思想

を現代視点で丁寧に解説します。


概要

Hello Dolly は WordPress 1.2(2004年)に同梱された公式プラグインです。

目的は非常に明確で、

「WordPressはこうやって拡張する」

という開発者向けの実例を示すこと。

コード量は少ないものの、実は以下すべてが含まれています。

  • データ処理
  • WordPress API利用
  • アクションフック
  • 管理画面出力
  • CSS注入
  • 国際化(i18n)対応
  • アクセシビリティ配慮

つまり プラグイン開発の最小完成形です。


主な変更点・特徴

Hello Dolly のコードは、大きく4つの役割に分かれています。

  • 歌詞データの取得
  • 表示内容の生成
  • WordPressイベントへの登録(Hook)
  • 管理画面CSSの追加

順番に見ていきます。


何が変わるのか / 影響(コード解説)

① 歌詞を取得する関数

function hello_dolly_get_lyric() {

ここがデータ処理の中心です。

▼ 歌詞を文字列として定義

$lyrics = "Hello, Dolly
Well, hello, Dolly
…";

ポイント:

  • DBを使わない
  • 外部通信もしない
  • 完全に自己完結

サンプルコードとして理解しやすさを優先しています。


▼ 改行ごとに分割

$lyrics = explode( "\n", $lyrics );

explode() によって、

1行 = 1要素

の配列へ変換。

つまり:

[
"Hello, Dolly",
"Well, hello, Dolly",

]

になります。


▼ ランダムに1行選択

$lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ]

ここでは:

  • count() → 行数取得
  • mt_rand() → 高速乱数生成

を組み合わせています。

毎回表示が変わる理由はここです。


▼ WordPress独自関数

return wptexturize(…)

これが重要。

wptexturize() は:

  • クォート記号補正
  • タイポグラフィ整形
  • WordPress標準表示ルール適用

を行います。

👉 「WordPressらしい表示」に変換する処理

単なるPHPではなく、WordPress環境に統合されています。


② 実際に画面へ表示する

function hello_dolly() {

ここは「出力担当」。


▼ 歌詞取得

$chosen = hello_dolly_get_lyric();

責務分離がされています。

  • 取得ロジック
  • 表示ロジック

を分けているのは非常に良い設計。


▼ 管理画面の言語判定

if ( 'en_' !== substr( get_user_locale(), 0, 3 ) )

ユーザー言語が英語以外なら:

lang="en"

を追加。

これは:

✅ スクリーンリーダー対応
✅ 多言語環境対応

というアクセシビリティ設計です。

2004年コードとは思えない配慮。


▼ HTML出力

printf(…)

出力されるHTMLは実質:

<p id="dolly">
  <span class="screen-reader-text">...</span>
  <span dir="ltr">歌詞</span>
</p>

ここで重要なのは:

  • __() → 翻訳対応
  • screen-reader-text → 視覚障害者対応
  • dir=”ltr” → 表示方向固定

WordPress標準UIルールの教科書状態です。


③ Hook(WordPressの核心)

add_action( 'admin_notices', 'hello_dolly' );

これがWordPress最大のポイント。

意味は:

管理画面通知が表示されるタイミングで hello_dolly() を実行

つまり、

  • コアを変更しない
  • 指定イベントへ割り込む

これが プラグインアーキテクチャの本質です。

現代WordPressでも完全に同じ仕組みが使われています。


④ CSSを管理画面へ追加

function dolly_css()

ここでは <style> を直接出力。

add_action( 'admin_head', 'dolly_css' );

により、

管理画面 <head> 読み込み時に実行されます。


CSSのポイント:

  • 右上へ配置
  • RTL言語対応
  • モバイルレスポンシブ対応
  • ブロックエディタでは非表示

後年のGutenbergにも対応済みなのが興味深い点です。


個人的な所感

Hello Dolly を改めて読むと驚くのは、

「初心者向けサンプルなのに設計が正しい」こと。

たった数十行で:

  • Hook思想
  • WordPress API利用
  • 国際化
  • アクセシビリティ
  • UI統合

が全部学べます。

現代のプラグイン開発でも、

最初に読むべきコードはHello Dolly

と言われ続ける理由がよく分かります。

実用機能ゼロなのに、教育価値は極めて高い。


まとめ

Hello Dolly は単なるジョークプラグインではなく、

  • WordPress拡張モデルの原点
  • Hookベース設計の実例
  • プラグイン開発の最小テンプレート

でした。

現在のWordPressには数万のプラグインがありますが、そのすべての始まりはこのコードです。

もしこれからWordPress開発を始めるなら、
フレームワーク解説より先に Hello Dollyを読むことをおすすめします。

小さなコードですが、WordPressの思想そのものが詰まっています。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です