当サイトには広告が含まれております

WordPressのプラグイン Hello Dolly を解析してカスタマイズ

この記事は最終更新日から9年経過しています。内容が古い可能性があります。

WordPressをインストールして必要な設定をしていたのですが、そのときに最初から入っているプラグイン「Hello Dolly」が気になりました。このプラグインはどのようにプラグインを作るか、ということのサンプルとして入っているものらしいです。
コードも短く、ファイルも1つなのでPHPの初心者でも触りやすいのでは無いかと思いました。短いので中身を解析してちょっとカスタマイズもしてみます。

記事をざっと見る

Hello Dollyってなに?

Hello Dollyのプラグインの説明には、

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

とあります。ちょっと意味不明ですが 歌詞がランダムに表示される プラグインのようです。

ダッシュボード プラグイン で、

Hello Dolly有効化をクリックします。
*このプラグインは管理画面にHello Dollyの歌詞が表示されるだけなので、有効化しても通常のサイトには影響を与えません。

すると管理画面の右上に、

このようにランダムに歌詞が表示されるようになりました。そんな感じのプラグインです。

Hello Dolly の中身をみてプラグインの作りを知る

Hello Dolly は wp-content\plugins\ に hello.php というひとつのファイルだけでできています。

中身を見てみます。

ダッシュボード プラグイン をクリックして Hello Dolly のところにある 編集 をクリックします。

このように、Hello Dollyの編集画面になります。

頭の部分をみます

/**
 * @package Hello_Dolly
 * @version 1.6
 */
/*
Plugin Name: Hello Dolly
Plugin URI: http://wordpress.org/plugins/hello-dolly/
Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
Author: Matt Mullenweg
Version: 1.6
Author URI: http://ma.tt/
*/

Plugin Name: Hello Dolly と書いてあるところがこれがプラグインで Hello Dolly という名前だということを示しています。

function hello_dolly_get_lyric() {
    /** These are the lyrics to Hello Dolly */
    $lyrics = "Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
(中略)
Dolly'll never go away
Dolly'll never go away again";
    // Here we split it into lines
    $lyrics = explode( "\n", $lyrics );

    // And then randomly choose a line
    return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] );
}

function hello_dolly_get_lyric()の後の { から } までは、hello_dolly_get_lyric という関数の内容が書いてあります。

$lyrics = “Hello, Dolly

から

Dolly’ll never go away
Dolly’ll never go away again”;

までが今回ランダムに表示している文章です。

    // Here we split it into lines
    $lyrics = explode( "\n", $lyrics );

ここで $lyrics という変数を改行(\n)で分割します。これで一行ずつの配列になります。

配列番号0は Hello, Dolly
配列番号26は Dolly’ll never go away
配列番号27は Dolly’ll never go away again

というような感じです。

    // And then randomly choose a line
    return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] );

wptexturize は文字を整形する関数です(英文の時だけ必要かも)。先ほど配列にした $lyrics という変数は $lyrics[数値] の形で指定した配列番号の値を取り出すことができます。

例えば $lyrics[26] は Dolly’ll never go away となります。

このコードで、 mt_rand( 0, count( $lyrics ) – 1 ) の mt_rand はランダムに数値を生成する関数です。この場合、0から27の間の任意の数値を生成します。count( $lyrics )は$lyricsの配列の数なので28になりますが、配列は0から始まるので -1 しています。

ということで、このhello_dolly_get_lyricという関数は$lyricsという0から27までの配列からランダムに文章が選ばれたものが返されます。

// This just echoes the chosen line, we'll position it later
function hello_dolly() {
     = hello_dolly_get_lyric();
    echo "<p id='dolly'>$chosen</p>";
}

hello_dollyという関数で、

$chosen = hello_dolly_get_lyric();

先ほどの hello_dolly_get_lyric という関数から文章をランダムで取得し $chosen に入れます。

    echo "<p id='dolly'>$chosen</p>";

そして取得した $chosen をPタグで囲んだものを echo で表示します。

// Now we set that function up to execute when the admin_notices action is called
add_action( 'admin_notices', 'hello_dolly' );

add_actionで、WordPressシステムの関数にアクション関数を追加します。
add_action( アクション, 実行する関数) が書いてあります。

admin_noticesは、管理画面の上部に何かを表示するアクションです。実行する関数は hello_dolly です。先ほど見たようにランダムな文章が返されます。

ということで、この仕組みでこのプラグインを有効化すると管理画面にランダムな文章が表示されるようになりました。

カスタマイズしてみる 文章を入れ替える

日本語で表示してみたかったので、

青空文庫 詩ノート 宮沢賢治

から文章をコピーして、

    $lyrics = "霜と聖さで畑の砂はいっぱいだ
   影を落す影を落す
   エンタシスある氷の柱
そしてその向ふの滑らかな水は
おれの病気の間の幾つもの夜と昼とを
よくもあんなに光ってながれつゞけてゐたものだ
   砂つちと光の雨
けれどもおれはまだこの畑地に到着してから
一つの音をも聞いてゐない";

のように書き換えてみました。すると管理画面には、

このように宮沢賢治の詩がランダムに表示されるようになりました。

まとめ:1ファイルでもプラグインになるんですね!

プラグインはこのように1ファイルでも作れるモノなんですね!このプラグインは短いので全部を見ることができるし、少しずつカスタマイズして「こういうことをすると、こうなるのか」という勉強をしながらプラグインの仕組みを勉強するのに良いかと思いますのでいじってみてください(^^)/

この記事が気に入ったら
いいね または フォローしてね!

あなたのシェアが励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

記事をざっと見る