Eclipse PDT を使って WordPress プラグインを作成する

Eclipse ツールを使って WordPress を拡張する

WordPress は PHP で作成された Web パブリッシングのプラットフォームであり、ストレージに MySQL を使用しています。このプラットフォームは、フィルターやアクションを追加するためのプラグインを作成することで拡張することができます。一方、Eclipse の PDT (PHP Development Tools) V2.0 プロジェクトを利用すると、Eclipse を使って PHP アプリケーションを作成することができます。この記事では、PDT を使ってプラグインを作成することで、WordPress を拡張する方法を学びましょう。

Nathan A. Good (mail@nathanagood.com), Senior Information Engineer, Freelance Developer

Nathan A. Good lives in the Twin Cities area of Minnesota. Professionally, he does software development, software architecture, and systems administration. When he's not writing software, he enjoys building PCs and servers, reading about and working with new technologies, and trying to get his friends to make the move to open source software. He's written and co-written many books and articles, including Professional Red Hat Enterprise Linux 3, Regular Expression Recipes: A Problem-Solution Approach and Foundations of PEAR: Rapid PHP Development.


developerWorks 貢献著者レベル

2009年 3月 10日

Eclipse の PDT V2.0 プロジェクトが最近リリースされました。このプロジェクトには、これまでのバージョンの機能に加えて、使い勝手の良い新たな機能が含まれています (例えばビルド・パスを追加できる機能や、クラスを検索できる Open Type 機能、使い勝手が改善されたコード・アシスト機能など)。

この記事では WordPress をダウンロードしてインストールする方法と、Eclipse PDT を使ってプラグインを作成する方法について説明します。またプラグインを共有できるように Eclipse からプラグインをエクスポートする方法についても説明します。

この記事を最大限に活用するためには以下のツールを用意する必要があります。

  • PHP V4.3 以降
  • MySQL V4.0 以降
  • PDT をインストールした Eclipse V3.4

WordPress の概要

WordPress は PHP で作成された Web パブリッシング用のプラットフォームであり、このプラットフォームを利用すると Web 上に素早く容易にコンテンツを公開することができます。WordPress は非常に拡張性が高く、プラグインを作成することで、ほとんどどんな機能でも実現することができます。WordPress のダウンロード数は、2005年以降何百万件にものぼり、大企業や個人などで使われています。

WordPress のインストールと構成は容易であり、準備する必要があるのは PHP と MySQL のみです。WordPress をインストールするためには、単純に WordPress の Web サイト (「参考文献」を参照) から ZIP ファイルをダウンロードし、Web サーバーからアクセスできるディレクトリーにその ZIP ファイルを解凍すればよいだけです。この記事では、ユーザー・ディレクトリー (Apache の userdir モジュールなど) を公開できるように構成された Web サーバーを使います。必要に応じて WordPress のディレクトリーの名前を変更します。私は wordpress から blog に変更しました。

ファイルを解凍してディレクトリーをリネームしたら、「5 分間インストール」の手順に従います (「参考文献」を参照)。皆さんの ISP (Internet Service Provider) が WordPress の要件をサポートしている場合には、ローカルで開発を行ってディレクトリー全体をサイトに FTP でアップロードすることができます。


WordPress を拡張する

WordPress はよくブログに使われていますが、WordPress を使うと、どのようなコンテンツも容易に公開することができます。私は、さまざまな製品に関する情報サイトをホストするメイン・エンジンとして WordPress を使用するサイトの構築に携わったことがあります (そのサイトのホームページには、フォーラムやフィードバック・フォーラム、Adobe® Flash® アニメーションなどが含まれています)。

WordPress 用のプラグインは数多くあります (「参考文献」を参照)。これらのプラグインには、WordPress サイトの登録ユーザーに関する情報を収集するカスタム・フィールドを追加するものから、タグ・クラウド、アンチスパム・ユーティリティー、さらには Facebook、MySpace、del.icio.us、Technorati といった人気のサイトで「共有する」ためのリンクを生成する連絡先用のプラグインまで、さまざまなものがあります。

しかしこのように豊富なプラグインがあっても、独自の要求に合わせて WordPress を拡張しなければならない場合があります。この記事のこれから先では、WordPress のプラグインの開発環境を Eclipse と PDT を使ってセットアップする方法について説明し、WordPress のプラグインの作成とテストを行います。


ワークスペースをセットアップする

ワークスペースをセットアップする前に、WordPress がインストールされて実行されていることを確認します。WordPress ディレクトリーに対して、読み書きのアクセスができる必要があります。最高のシナリオとしては、皆さんのマシン上の Web サーバーにユーザー・ディレクトリーを構成し、皆さん自身のホーム・ディレクトリーにファイルを配置するようにすることです。しかし共有ディレクトリーであっても、そのディレクトリーに読み書きのアクセスができさえすれば問題ありません。

先に進む前に、WordPress_home/wp-content/plugins ディレクトリーの中にディレクトリーを作成します (ここで WordPress_home は WordPress を解凍したディレクトリーへのフル・パスです)。例えば WordPress home/wp-content/plugins/myplugin のようにします。このすぐ後で、そのディレクトリーが新しい WordPress プラグインのホーム・ディレクトリーになります。

WordPress が立ち上がって、プラグイン用に新しく作成したディレクトリーに読み書きのアクセスができるようになると、WordPress プラグイン用の新しいプロジェクトを作成する準備が整ったことになります。

  1. File > New > Project の順に選択し、Wizards の一覧から PHP Project を選択します (図 1)。
    図 1. 新しい PHP プロジェクトを作成する
    新しい PHP プロジェクトを作成する
  2. Next をクリックします。
  3. New PHP Project ウィンドウの中で、Project name ボックスの中にプラグインの名前を入力します。
  4. Contents の下で Create project from existing source (既存のソースからプロジェクトを作成) を選択します。次に、先ほど作成したディレクトリーを参照するか、あるいはそのディレクトリーの名前を Directory ボックスの中に入力します (例えば私の場合は /Users/ngood/Sites/blog/wp-content/plugins/myplugin です)。これを図 2 に示します。
    図 2. プロジェクトの場所を指定する
    プロジェクトの場所を指定する
  5. ディレクトリーの情報を入力したら Finish をクリックします (残りの情報はデフォルト値のままです)。

プロジェクトを作成すると、WordPress_home/wp-content/plugins/myplugin ディレクトリーの中のディレクトリー・リストはリスト 1 のようになります。

リスト 1. 新しい myplugin ディレクトリーの内容
drwxr-xr-x  7 user  user    238 Feb  3 11:02 .
drwxr-xr-x@ 5 user  user    170 Feb  3 08:39 ..
-rw-r--r--  1 user  user    259 Feb  3 11:10 .buildpath
-rw-r--r--  1 user  user  30244 Feb  3 11:02 .pmd
-rw-r--r--  1 user  user    496 Feb  3 08:39 .project
drwxr-xr-x  3 user  user    102 Feb  3 08:39 .settings
-rw-r--r--  1 user  user    795 Feb  3 11:13 myplugin.php

チーム環境で作業する場合

チーム環境でコードを共有しながら作業する場合には、Eclipse ツールを使って適切なディレクトリーからファイルをソース管理リポジトリーにチェックインする処理を行います。ただし、チーム共有環境からワークスペースにインポートする際のインポート元のディレクトリーに注意してください。ソース管理リポジトリーからワークスペースにファイルをインポートする場合には、それらのファイルを保管する場所を指定します (図 3)。Eclipse でのソース・コード・リポジトリーの使い方については「参考文献」を参照してください。

図 3. WordPress の管理ペインに表示されたプラグイン
WordPress の管理ペインに表示されたプラグイン

ビルド・パスに WordPress を追加する

PDT プロジェクトにはビルド・パスにフォルダーを追加する機能が用意されており、この機能を使うと WordPress でコード補完ツールを動作させることができます。コード補完機能の中に add_filter 関数と add_action 関数を表示するためには、ビルド・パスを変更して WordPress の wp-includes ディレクトリーを追加します。

WordPress の wp-includes ディレクトリーをビルド・パスに追加するためには、PHP Project が選択された状態で Project > Properties の順に選択します。Libraries タブで Add External Source Folder (外部ソース・フォルダーを追加) をクリックし、WordPress をインストールした場所にある wp-includes ディレクトリーを参照し、OK をクリックします。これで PHP エディターに add_ と入力するとコード補完機能が呼び出され、add_actionadd_filter を含むリストが表示されます。


プラグイン・ファイルを追加する

最初のプラグイン・ファイルを追加するためには、File > New > PHP File の順に選択します。プラグイン・ファイルの名前は、そのファイルが置かれているディレクトリー名と同じにする必要があります。例えばプラグインのディレクトリーの名前が myplugin の場合には、ファイルの名前を myplugin.php にします。WordPress はこのファイルを読み取ってプラグインに関する情報を取得し、拡張ポイントを登録します。

プラグインであることを WordPress に認識させるためには、新しいプラグイン・ファイルの中にコメント・ブロックを貼り付ける必要があります。WordPress のプラグインを大量に作成する場合には、このコード・ブロックを PHP のコード・テンプレートの中に配置することを検討する必要があるかもしれません。リスト 2 は完成したコード・ブロックの例を示しています。

リスト 2. プラグインであることを認識させるするためのコメント・ブロック
/*
Plugin Name: My Plugin
Plugin URI: http://www.example.com/myplugin
Description: This is a really great plugin that extends WordPress.
Version: 1.0.0
Author: Nathan A. Good
Author URI: http://www.nathanagood.com
*/

この状態では、プラグインは何もしません。しかしコメント・ブロックを付けただけで、このプラグインが WordPress のプラグイン管理領域に表示されるようになります。新しいプラグインを表示するためには管理者として WordPress のインスタンスにログインし、Plugins をクリックします。すると新しいプラグインが Inactive Plugins の下に表示されるはずです。

図 4. ソース管理リポジトリーからインポートする場合のソースの場所を指定する
ソース管理リポジトリーからインポートする場合のソースの場所を指定する

機能を追加する

この記事では 2 つの機能を追加します。1 つ目は単純な機能で、ブログ・エントリーのタイトルを大文字にする機能です。これはフィルターを追加する例です。2 つ目の機能は、ユーザーの登録フォームの最後で好きな色を入力する機能で、フォームにフィールドを追加します。これはアクションを追加する例です。

ここではできるだけ簡潔にするために、関数型のコードで例を作成します。ただし PHP V5 以降を使用している場合には、オブジェクト指向の概念を取り入れることでコードを読みやすく、保守しやすいものにすることができます。オブジェクト指向プログラミングの概念とデザイン・パターンを使って保守しやすい PHP を作成する方法の詳細は、「参考文献」を参照してください。

タイトルを大文字にする

タイトルをフィルタリングするためのコードをリスト 3 に示します。このコードを見ると、PHP の strtoupper() 関数を使ってブログ投稿のタイトルを大文字にしていることがわかります。

リスト 3. タイトルを大文字にする関数
/**
 * Capitalizes the title given by $title.
 */
function capitalizeTitle($title) {
    return strtoupper($title);
}

この関数を作成できたら、add_filter を呼び出し、この関数を特定のフィルター拡張ポイントとして WordPress に登録する必要があります。利用可能なフィルターの完全な一覧へのリンクは「参考文献」に挙げてあります。フィルターを追加する例をリスト 4 に示します。

リスト 4. add_filter を使ってフィルターを追加する
/* now add the filter */
add_filter('the_title', 'capitalizeTitle');

登録フィールドを追加する

新しいカスタム登録フィールドを生成するためのコードをリスト 5 に示します。私は Firebug 拡張機能を使って既存の登録フォーム・フィールドの CSS (Cascading Style Sheet) スタイルを表示し、新しいカスタム・フィールドの CSS スタイル・クラスがそれと同じであることを確認しました。

リスト 5. 新しいカスタム・フィールドのアクション
/**
 * Adds a custom field that prompts the user for their favorite
 * color.
 * @return void
 */
function drawCustomField() {
    echo '<p><label>Favorite Color:<br />';
    echo '<input autocomplete="off" class="input" name="fav_color" ';
    echo ' id="fav_color" size="25"';
    echo ' value="' . $_POST['fav_color'] . '" type="text" tabindex="32" />';
    echo '</label><br /></p>';
}

カスタム・アクションを追加するためには下記のコードを使います。

リスト 6. add_action を使ってアクションを追加する
/* now add the action */
add_action('register_form', 'drawCustomField');

このアクションは単純にフォーム上にフィールドを描画するだけであり、ユーザーがフォームを送信しても実際にはデータを保存しません。データを保存するためには profile_update アクションを使います。利用可能なアクションの完全な一覧へのリンクとそれらのアクションの動作に関しては「参考文献」を参照してください。


プラグインをテストする

プロジェクトの中にコードを配置すると、プラグインをテストするための準備は完了です。プラグインをテストする前に、そのプラグインを WordPress の中で有効にする必要があります。管理者として WordPress にログインし、Plugins をクリックします。テストするプラグインを見つけたら Activate をクリックします。

プラグインを有効にしたら、ブログのホームページを表示します。「Hello World!」というサンプル投稿のタイトルがすべて大文字になっていることに気付くはずです。このプラグインを無効にすると、この投稿のタイトルが通常どおりの大文字と小文字の組み合わせに戻ります。この機能を利用して他のことを行うこともできます (例えばタイトルの中にある URL をハイパーリンクに変えるなど)。同じ名前を持つフィルターを複数追加することもできるので、さまざまなことをする 1 つのフィルターを作成するよりも、簡単な単機能関数を作成して連結することを検討してみてください。

このプラグインの登録フィールド部分をテストするためには、管理者ユーザーとして WordPress にログインし、Settings ページ上でユーザー登録を行える機能をオンにする必要があります。このオプションを有効にして登録ページを開くと Favorite Color フィールドが表示されるはずです。


その他の WordPress 拡張ポイント

WordPress にフィルターとアクションを追加する以外に、WordPress の関数をオーバーライドすることもできます。どの関数をオーバーライドするかの指定は WordPress のホーム・ディレクトリーの pluggable.php ファイルで行います。オーバーライド可能な関数の一例が wp_mail です。wp_mail を利用すると、ユーザーに E メールを送信する別の関数を提供することができます。オーバーライド可能な関数の多くはユーザー許可に関する機能を扱うものです (ログイン、クッキーの設定、さまざまなイベントの通知など)。このため、新しいプラグインを作成して WordPress に対する認証と許可を別の形式で行うこともできます (例えばエンタープライズ・ユーザー・ストアに対する認証を行うなど)。


プラグインをエクスポートする

プラグインを作成し、完全にテストしたら、そのプラグインを他の人達と共有したくなるはずです。WordPress のプラグインは WordPress そのものと同じようにパッケージ化されています。大部分は単なる ZIP ファイルであり、WordPress のプラグイン・ディレクトリーの中に解凍してコピーすることができます。

Eclipse を使うとプラグイン・ファイルをエクスポートすることができますが、Eclipse を使ってプロジェクトを ZIP アーカイブ・ファイルとしてエクスポートすることで、プロジェクト固有のファイルやチームで共有するディレクトリーやファイル (例えば .svn、つまり CVS (Concurrent Version Systems) ディレクトリーなど) をプラグイン・ファイルとは別に用意する必要がなくなります。

アーカイブ・ファイルにプラグインをエクスポートするためには、その PHP プロジェクトを選択し、File > Export の順に選択します。Select ウィンドウの中でエクスポート先リストから Archive File を選択し、Next をクリックします。

図 5. WordPress のプラグインをエクスポートする
WordPress のプラグインをエクスポートする

Archive file ウィンドウ (図 6) の中で Deselect All (すべての選択を解除) をクリックしてから、アーカイブ・ファイルに含めたい PHP ファイル (例えば myplugin.php など) をクリックします。それらの PHP ファイルを選択したら、アーカイブ・ファイルの場所を To archive file で指定し、Finish をクリックしてファイルを作成します。一貫性を保つために、この ZIP ファイルの名前をプラグイン・ディレクトリーの名前とメインのプラグイン・ファイルの名前と同じにしておくことが賢明です。

図 6. エクスポート対象のファイルを選択する
エクスポート対象のファイルを選択する

これで Eclipse からアーカイブ・ファイルを作成することができたので、このファイルを Web サーバーに公開するか、あるいは ISP の指定する場所にコピーして、このファイルを使うことができます。

プラグインに関する情報を WordPress の公式サイトに追加するための方法については「参考文献」に挙げた資料に書かれた手順に従ってください。


まとめ

WordPress は非常によく使われるようになった拡張可能な Web アプリケーションであり、WordPress を利用することでコンテンツを容易にユーザーに公開することができます。WordPress を拡張すると、WordPress のコードを何も変更せずに、より多くの機能を提供することができます。

PDT をインストールした Eclipse IDE を利用すると、PHP ツールを使ってプラグインを作成することができます。そのプラグインが完成するまで WordPress を使ってプラグインをテストし、実行することができます。その後、Eclipse のエクスポート機能を使うことによって、プラグインを配布に適したアーカイブ・ファイルとしてエクスポートすることができます。

参考文献

学ぶために

  • WordPress の公式サイトを訪れ、WordPress について学んでください。
  • WordPress を素早くインストールするために、チュートリアル「5 分間インストール」を見てください。
  • 拡張可能な WordPress のフィルターとして利用可能なものの一覧として、Plugin API/Filter Reference を見てください。
  • 拡張可能な WordPress のアクションとして利用可能なものの完全な一覧として、Plugin API/Action Reference を見てください。
  • WordPress を使ってプラグインをホストする方法を学ぶために、http://wordpress.org/extend/plugins/about/ を訪れてください。
  • PDT を使ったデバッグをセットアップし、プラグインをデバッグする方法を学ぶために、「Debugging PHP using Eclipse and PDT」を読んでください。
  • PHP による適切なオブジェクト指向のコーディング習慣を身に付けるために、「PHP でオブジェクト指向の設計をするための 7 つの良い習慣を身につける」を読んでください。
  • Eclipse の推奨読み物リスト」を調べてみてください。
  • developerWorks には他にも Eclipse に関する資料が豊富に用意されています。
  • Twitter で developerWorks をフォローしてください。
  • Eclipse が初めての人は、developerWorks の記事「Eclipse Platform 入門」を読んでください。Eclipse の起源やアーキテクチャー、またプラグインを使って Eclipse を拡張する方法などを学ぶことができます。
  • IBM developerWorks の Eclipse project resources を利用して Eclipse のスキルを磨いてください。
  • developerWorks podcasts ではソフトウェア開発者のための興味深いインタビューや議論を聞くことができます。
  • developerWorks の Technical events and webcasts で最新情報を入手してください。
  • IBM のオープンソース技術や製品機能を調べ、学ぶために、無料の developerWorks On demand demos をご覧ください。
  • IBM オープンソース開発者にとって関心のある、世界中で今後開催される会議や業界展示会、ウェブキャスト、その他のイベントについて調べてみてください。
  • developerWorks の Open source ゾーンをご覧ください。オープンソース技術を使った開発や、IBM 製品でオープンソース技術を使用するためのハウ・ツー情報やツール、プロジェクトの更新情報など、豊富な情報が用意されています。

製品や技術を入手するために

議論するために

  • Eclipse に関する質問を議論するための最初の場所として、Eclipse Platform newsgroups があります (このリンクをクリックすると、デフォルトの Usenet ニュース・リーダー・アプリケーションが起動し、eclipse.platform が開きます)。
  • Eclipse newsgroupsには、Eclipse を利用し、拡張することに関心を持つ人達のために、さまざまなリソースが用意されています。
  • developerWorks blogs から developerWorks のコミュニティーに加わってください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=380628
ArticleTitle=Eclipse PDT を使って WordPress プラグインを作成する
publish-date=03102009