こんにちは、株式会社オンラインの金沢です。
社会人になり一週間以上が経ちましたが、学生の頃に比べて曜日感覚がだんだんと薄くなってきている気がします。今朝も、もう金曜日であることに少しビックリしてしまいました。
そこで、再びWordPressで遊んでみました。今度は管理画面に今日が何曜日かを出力するプラグインを作成してみました。作成方法は、WordPressにデフォルトでインストールされているプラグイン「Hello Dolly」を改造しただけです。
プラグイン「Hello Dolly」について
「Hello Dolly」はWordPressを始めた頃に誰もが一度は有効化されたことがあると思いますが、管理画面の右上に、「Hollo Dolly」という曲の歌詞の一節がランダムで出力されるだけのものです。プログラムファイルもPHPファイル「hello.php」が1つだけで、そのファイルも100行に満たないほどの簡単な構造となっております。
「hello.php」の中身は、歌詞をランダムで取得する関数「hello_dolly_get_lyric」(15~51 行目)と、取得した歌詞をpタグに入れて出力する関数「hello_dolly」(54~57 行目)、styleタグを出力する関数「dolly_css」(63~78 行目)があります。あとはアクションフックがあり、「admin_notices」に「hello_dolly」をフックさせ、「admin_head」に「dolly_css」をフックさせているだけです。
「Holle Dolly」を曜日の出力に改造
上記の解説から、「admin_notices」アクションに現在の曜日を出力する関数をフックさせれば済むだけの話ですが、せっかくですのでランダム出力の機能を残したまま改造をしてみました。
まず、関数「hello_dolly_get_lyric」で歌詞の代わりに色々な曜日の言い方を記述してみました。「今日は%s曜日です。」とか、礼儀正しく「本日は%s曜日でございます。」としてみたり、親しみを込めて「やあ、今日は%s曜日だよ!」、ツンデレっぽく「べ、別に今日は%s曜日じゃないんだからねっ!!」などです。これらがランダムに取得されます。
次に、「hello_dolly」関数で出力する前に曜日をdate関数で取得します。ただし、date関数のフォーマットパラメータには日本語の曜日がありませんので、日本語の曜日を配列で定義しておきます。
$day_array = array( '日', '月', '火', '水', '木', '金', '土', );
これで、date関数のフォーマットパラメータ「’w’」で得られる数値を、定義した配列のキーに指定すれば現在の曜日が日本語で得られます。
そして、出力はprintf関数を使用します。
printf( '<p id="online-day">' . $chosen . '</p>', $day_array[ date( 'w' ) ] );
このように記述すれば、1つ目の引数の文字列にある「%s」が2つ目の引数に置換されます。これで改造完了です。
改造の際は関数名やHTMLタグのIDをユニークな名前に変更することを推奨します。もとのプラグインと同時に有効化すると同じ名前が存在することになり、エラーの原因となります。もとのプラグインを破棄していれば問題はありませんが、念のために安全なものにしておきましょう。
まとめ
プラグインの基本はアクションフックやフィルターフックであるということがよくわかりました。現在プラグインの開発方法を勉強中ですが、管理画面のメニューに表示したり、オプションの値を保存できるくらいになれば、よりプラグインっぽくなりますね。まだまだ成長の余地があります。
金沢