PHPの勉強にWordPressのプラグインを作ってみる

PHPを少しづつ勉強してきましたが、データベース連携に突入する前に復習の為、いろいろと作ってみることにしました。とりあえず、お題は「簡単なWordPressプラグイン」です。

インターネットに繋がれていない、古~いWin98seのノートPCを引っ張りだしてきて、httpd+PHP5.1.3の環境でサンプルの学習してましたが、これを機にメインPCの方にローカルWordPress環境を構築。参考にしたのはひろまささんの「Eclipse + XAMPP で WordPress の開発環境を作ろう」です。Eclipseもインストール。XAMPPのインストールは簡単ですねぇ 8)

さてプラグインの作成ですが、まずは以下のドキュメントを読んで大体の感じをつかむ。特にひろまささんが書かれたドキュメントがすごく分かりやすい。Codexの方にAPI hookの完全かつ、詳細なリストが無かったのは以外。CodexとWordPress Hooksの間を行ったり来たり・・・。

役に立たないプラグインその1: t-reminder

僕は英語で記事を書く事が結構あるので、Firefoxのグーグル・ツールバーにあるスペルチェック機能を重宝しています。が、よく押し忘れます。又、BasicBilingualプラグインのための言語指定と概要を書くのも忘れがちです。そこで、記事投稿ページの「投稿」ボタン付近にでっかく赤い箱に、黒い文字で「Spell Check 忘れんなよ~! 第2言語忘れんなよ~!」と表示させるプラグインを作って見ます。はい、ただそれだけです。

[php]
// create function to show the reminder div
function t_reminder(){
print(‘

Spell Check 忘れんなよ~!
第2言語忘れんなよ~!

‘);
}

// excure the function at the bottom of edit bit
add_action(‘simple_edit_form’, ‘t_reminder’);
add_action(‘edit_form_advanced’, ‘t_reminder’);
add_action(‘edit_page_form’, ‘t_reminder’);

// We need some CSS to position the paragraph
function t_reminder_css() {
echo “

#reminder {
width: 80%;
border: 1px solid #b8210b;
background-color: #df260d;
margin: 0; padding: 10px;
}
#reminder p{
margin: 10px 30px;
font-size: 16px;
font-weight: bold;
font-color: #999;
}

“;
}

add_action(‘admin_head’, ‘t_reminder_css’);
[/php]

プラグインと認識させる為のコメントをまず記述し、関数 t_reminder を定義。関数の中身は print でXHTMLのコードを書き出しているシンプルな物です。アクション・フックの種類は、同じ用な箇所にカスタム・フォームを付け加えるBasic Bilingualのそれを参考。完成したプラグインをアクティベートさせるとこのようになりました。

t-reminder_ss.png

CSSで赤くするように指定してあるのに(このコードはHello Dollyを参考にした)黒で表示されてる。問題はCSSだろうと見当は付くので、とりあえず目標どおりの動作をしてくれたことにパチパチパチ~。

役に立たないプラグインその2: t-osakaben

先ほどはアクション・フックを使ったので、今度はフィルター・フックを使ってみる。ひろまささんの、☆をつける「startime」と全く同じことをするとただ単にコピペしただけになるので、ちょっと違うのにしてみる。プラグイン名から察しがつくとは思いますが、アクティベートすると記事を大阪弁にしてくれるプラグインです。もちろん初めからそんな大掛かりなプラグインを目指すのではありません。シンプルに、記事中の「です。」を「やねん。」に変えます。もちろんデータベースにあるオリジナルの記事に手を加えるのではなく、動的にページを作成した際に「です。」を「やねん。」に変換します。

まず、関数から定義しようと思い、独習PHPにマルチバイトに関する章があるのでそこをもう一度見てみました。が思ったとおり、指定した文字を指定する文字に置き換えるマルチバイト関数なんかありません。php.netをチェックしても無い。でもcodexをチェックすると、記事本文のフィルター・フック the_content の解説にやろうとしていた事が例としてかかれているじゃぁないですか!preg_replace 関数なんですね。別にマルチバイトに関してはなにも書いてなかったけど、とりあえず使ってみる。

[php]
/*
* osakaben 関数を定義
*/
function osakaben($content=”){
return preg_replace(“/です。/” , “やねん。” , $content);
}

/*
* WP の the_content に osakaben関数を追加
*/
add_filter(‘the_content’, ‘osakaben’);
[/php]

1回目はうまくいかなかったけど、スラッシュを付け忘れたのに気づく。2回目に成功。アクティベートする前はこんな感じ。

t-osakaben_ss1.png

大阪弁にすると・・・

t-osakaben_ss2.png

まとめ

おもったよりも簡単でした。このくらいのレベルだと、ほんとにちょっとした練習にぴったりかも。でも、少し物足りない。やっぱり簡単な掲示板(WordPressと関係なく)かなにかをつくってみるのが良いのかな? あと独習PHPはPHP5.1.1を前提に書かれているけど、WordPressはもちろんの事、使用しているさくらのレンタルサーバがPHP4止まり。そこらへんをもうちょっと調べる必要有り。

しばらくこの「役に立たないプラグイン」シリーズ続けます。上の2つもまだまだ改善余地があり。 😮