WordPressをインストールすると2つのプラグインがインストールされています。Akismet Anti-spam: Spam ProtectionとHello Dollyです。
Hello Dollyはどのサイトでも削除を推奨しています。なぜ削除しても問題ないのでしょうか。なぜ最初からインストールされているのでしょうか。
今回はプラグインHello Dollyの内容を本気で解説します。
プラグインの動作を解説しますので、本当に削除していいのか不安な人はぜひご覧ください。
削除して問題なし
結論を申しますと、Hello Dollyは削除しても問題ないプラグインです。
削除して問題ない理由はホームページを運用する上で必要でない機能だからです。
続いてHello Dollyの中身を確認しましょう。
Hello Dollyプラグインの中身
プラグインのバージョンは1.7.2です。
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
You're still glowin', you're still crowin'
You're still goin' strong
I feel the room swayin'
While the band's playin'
One of our old favorite songs from way back when
So, take her wrap, fellas
Dolly, never go away again
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
You're still glowin', you're still crowin'
You're still goin' strong
I feel the room swayin'
While the band's playin'
One of our old favorite songs from way back when
So, golly, gee, fellas
Have a little faith in me, fellas
Dolly, never go away
Promise, you'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 ) ] );
}
// This just echoes the chosen line, we'll position it later.
function hello_dolly() {
$chosen = hello_dolly_get_lyric();
$lang = '';
if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) {
$lang = ' lang="en"';
}
printf(
'<p id="dolly"><span class="screen-reader-text">%s </span><span dir="ltr"%s>%s</span></p>',
__( 'Quote from Hello Dolly song, by Jerry Herman:', 'hello-dolly' ),
$lang,
$chosen
);
}
// Now we set that function up to execute when the admin_notices action is called.
add_action( 'admin_notices', 'hello_dolly' );
// We need some CSS to position the paragraph.
function dolly_css() {
echo "
<style type='text/css'>
#dolly {
float: right;
padding: 5px 10px;
margin: 0;
font-size: 12px;
line-height: 1.6666;
}
.rtl #dolly {
float: left;
}
.block-editor-page #dolly {
display: none;
}
@media screen and (max-width: 782px) {
#dolly,
.rtl #dolly {
float: none;
padding-left: 0;
padding-right: 0;
}
}
</style>
";
}
add_action( 'admin_head', 'dolly_css' );
以上です。これがHello Dollyプラグインの中身です。これだけです。各行を詳しく解説していきます。
各行の解説
1行目の
function hello_dolly_get_lyric() {
は関数hello_dolly_get_lyric()
を定義しています。Hello Dollyの歌詞を取得したいことが伝わる関数名ですね。
3~29行目は
$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
You're still glowin', you're still crowin'
You're still goin' strong
I feel the room swayin'
While the band's playin'
One of our old favorite songs from way back when
So, take her wrap, fellas
Dolly, never go away again
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
You're still glowin', you're still crowin'
You're still goin' strong
I feel the room swayin'
While the band's playin'
One of our old favorite songs from way back when
So, golly, gee, fellas
Have a little faith in me, fellas
Dolly, never go away
Promise, you'll never go away
Dolly'll never go away again";
Hello Dollyの歌詞です。変数$lyrics
に歌詞を代入しています。長い歌詞を1つの変数に代入しています。ちなみに、この改行は見やすくするための改行ではなくて意味があります。
32行目の
$lyrics = explode( "\n", $lyrics );
は変数$lyrics
に入っている歌詞を改行で分割しています。explode
は文字の分割ができるphpの関数です。\n
は改行を意味しています。この場合は、変数$lyrics
を改行ごとに分割しています。改行で分割した歌詞は変数$lyrics
に配列として格納されます。
改行に意味があるというのは、32行目で改行ごとに分割させる必要があったからです。

配列は複数の値を入れることができる♪
35行目
return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] );
は改行ごとに分割されたHello Dollyの歌詞をランダムに取り出しています。複数の関数が出てきますので、順番に解説していきます。
まず、mt_rand
はランダムな値を返してくれるphpの関数です。mt_rand
関数はどの範囲の数字をランダムに取り出せるか指定することができます。範囲は0
からcount( $lyrics ) - 1
の間です。この中からランダムでひとつ数字を取り出します。
count( $lyrics ) - 1
をもう少し解説します。
count( $lyrics )
で変数$lyrics
に格納されている配列の数を数えています。
なぜ - 1
をするのかというと、配列は0から数えているからです。改行が27個あるので配列は27個ですが、変数$lyrics
に格納されている配列を取り出すために必要な添え字は0から始まります。よって0から26の27個の数字からランダムな数字をひとつ取り出したかったのです。
mt_rand( 0, 26 )
でいいのではと思う方もいると思います。もちろん、mt_rand( 0, 26 )
でも問題なくプログラムは動きます。
例えば、Hello Dollyの歌詞ではなく別の歌詞を載せるように改造するとします。そのときに修正する箇所が歌詞とmt_rand( 0, 26 )
の数字の箇所の2か所になります。歌詞を差し替えて行数を正確に数える必要があります。
プログラムに汎用性を持たせるためにあえて計算させているのですね。

正確な計算はプログラムに任せてる♪
次に$lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ]
はmt_rand
で返された値(数字)にある歌詞を抽出しています。
最後にwptexturize
はWordPressの定義している関数です。これはシングルコーテーションなどの記号や特定の文字を自動で変換する関数です。Hello Dollyの歌詞にあるシングルコーテーションなどの特定の記号や文字を変換しています。
return
は関数hello_dolly_get_lyric()
を実行したときに返される値です。つまりランダムに抽出したHello Dollyの歌詞を返しています。
39行目の
function hello_dolly() {
は関数hello_dolly()
を定義しています。プラグイン名と同じ名前ですのでメインの関数っぽいですね。関数の中を詳しく見てみましょう。
40行目の
$chosen = hello_dolly_get_lyric();
で変数$chosen
にHello Dollyの歌詞を代入しています。1行目に定義したhello_dolly_get_lyric()
関数を使用して、ランダムな歌詞が返ってきます。
41~44行目の
$lang = '';
if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) {
$lang = ' lang="en"';
}
は言語の判定をしています。$lang = '';
は空の変数$lang
を準備します。
if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) {
は言語の判定をしています。
はWordPressが定義している関数で、現在のサイトの言語を取得します。get_user_locale()
substr
は文字を切り出すためのphpの関数です。今回だとサイトの言語の0バイト目から3バイト目までを切り出しています。
この切り出した言語と文字列en_
を比較しています。!==
とありますので等しくないとき、つまり、サイトの言語の先頭3文字がen_
でないときTRUEに進みます。
サイトの言語が英語ではないとき(TRUEのとき)、変数$lang
に lang="en"
を代入します。英語だった場合はTRUEに進まないので$lang = '';
のままです。
46~51行目の
printf(
'<p id="dolly"><span class="screen-reader-text">%s </span><span dir="ltr"%s>%s</span></p>',
__( 'Quote from Hello Dolly song, by Jerry Herman:', 'hello-dolly' ),
$lang,
$chosen
);
で実際にHello Dollyの歌詞をホームページ上に表示させようとしています。
47行目の
'<p id="dolly"><span class="screen-reader-text">%s </span><span dir="ltr"%s>%s</span></p>',
が見るからにHTMLですのでこれをprintf
関数を使ってホームページ上に出力しようとしています。printf
関数はphpの関数です。
47行目に%s
が3か所ありますが、これが__( 'Quote from Hello Dolly song, by Jerry Herman:', 'hello-dolly' )
と$lang
と$chosen
を指しています。
55行目の
add_action( 'admin_notices', 'hello_dolly' );
で管理者ページにHello Dollyの歌詞を表示させるように指示しています。
add_action
はアクションフックと呼ばれるWordPressの機能で、任意の場所に文字を追加することができます。admin_notices
は管理者画面に用意されているフックですので、管理者画面にhello_dolly()
関数(ランダムに取得したHello Dollyの歌詞)を表示させているということです。
58行目以降はHello Dollyプラグイン用のスタイルシートを追加しています。スタイルシートの解説は省略します。dolly_css()
関数もアクションフックを使って表示させています。admin_head
は管理画面の <head>
内に文字を追加できる関数です。
なぜHello Dollyがインストールされているのか
Hello DollyはWordPressのプラグインのレビューでも低評価寄りのプラグインです。なぜ標準でHello Dollyはインストールされているのでしょうか。答えは、WordPressのプラグイン解説ページにありました。
All you need to do is turn your great idea into code.
必要なのは、素晴らしいアイデアをコードに変換することだけです。
https://developer.wordpress.org/plugins/intro/what-is-a-plugin/
まとめ
なるべく詳しく解説してみましたが、やはりWordPressでホームページを運用する上で必要ではないプラグインです。
WordPressでホームページを運用するためには必要ありませんが、プラグインを作ってみたい方には参考になるプラグインだと思います。
プラグインの作り方、フックの使い方、プラグインのアイデアがHello Dollyには詰め込まれています。
プラグインって簡単に作れるよってHello Dollyは教えたかったのだと思います。