1. HOME
  2. 開発・ブログ運営
  3. WordPress
  4. 初心者向け WordPress プラグイン作成 に関する覚書
2012年11月16日
WordPress がもっさりだったから高速化してみた ...
2012年08月12日
WordPess と PHP 5.3.13 で Allowed ...
2012年04月19日
プラグインを使わずに「最近の投稿」ウィジェットにサムネイル画像 ...
2014年09月09日
今更ながらブログに掲載するソースコードを綺麗に表示出来るシンタ ...
2012年06月07日
プラグイン(Contact Form 7)を使ってメールフォー ...
2012年06月16日
プラグイン(Smooth Scroll Links [SSL] ...

初心者向け WordPress プラグイン作成 に関する覚書

Twitter Tools を拡張するプラグインを作ったので、それで学んだ WordPress のプラグインの基本構造をメモ。

Twitter Tools プラグインを拡張するプラグインを作ってみました。ってことで簡単な、WordPress プラグインの作り方や、お作法がなんとなくわかった(つもりになってきた)ので、プラグイン全体の構造に関する覚書として一応メモ。

プラグインをつくるためには、

  1. PHP の基本的な文法
  2. フォームデータの受け渡し方法
  3. WordPress のアクションフック、フィルターフックとは何ぞや?

がある程度わかった上で、プラグインの作成 – WordPress Codex 日本語版 を一読すれば、簡単に理解できると思います。

それでは早速プラグインの作り方。

プラグイン冒頭に、

を書くのはお約束として・・、

プラグイン実装に必要なことは、

  1. プラグインオブジェクトの class 定義
  2. プラグインを初期化する関数の定義
  3. HTTP リクエストを処理する関数の定義
  4. プラグイン設定画面を描画する関数の定義

となります。もちろん、実装方法に決まりはないのでこうしなければ成らないという事ではないのでひとつの実装例として参考になれば。

参考:プラグインの作成 – WordPress Codex 日本語版
参考:WordPress コーディング基準 – WordPress Codex 日本語版

1. プラグインオブジェクトの class 定義

プラグインオブジェクトの class を定義します。最低限必要なのは、

  1. メンバ変数
  2. DB から値を取得してメンバ変数にセットする関数
  3. HTTP リクエストの値を取得してメンバ変数にセットする関数
  4. メンバ変数の値を DB へセットする関数

です。例えばこんな感じ。

メンバ変数名を配列に入れておくと、メンバ変数に値をセットする場合や、メンバ変数の値を DB にセットするときに楽ちんになります。

例えば、DB のデータを取得する場合は、

こんな感じで、foreach() でループさせてあげればおっけー。DB へのデータセットや、HTTP リクエストの値取得も基本的には同じ。

ようは、<form> データのフォーム名(HTTPリクエスト)と、メンバ変数と、DB のキーを1セットにして、同じ変数名で管理することが基本コンセプト。

ただ、DB に値をセットする場合は(DB のキーは)、なんらかしらのプレフィックスを付けておいた方が良いと思う。option テーブルは WordPress 本体や他のプラグインなんかが利用するので、自分のプラグインが使っているキーを区別するため。

参考:関数リファレンス/get option – WordPress Codex 日本語版

2. プラグインを初期化する関数の実装

アクションフック(init 又は admin_init)に、プラグインを初期化する関数をフックする。初期化する関数の中で、プラグイン本体のオブジェクトを生成して、DB からデータを取得してメンバ変数に格納。

たとえば、こんな感じ。

設定画面が読み込まれると、アクションフック(admin_init)がヒットして、init 関数が呼び出される。

init 関数にて、プラグインオブジェクトを生成し、DB から値を取得して生成したプラグインオブジェクトのメンバ変数にセットする。プラグインオブジェクトは global で保持

参考:プラグイン API – WordPress Codex 日本語版
参考:プラグイン API/アクションフック一覧 – WordPress Codex 日本語版
参考:プラグイン API/フィルターフック一覧 – WordPress Codex 日本語版

3. HTTP リクエストを処理する関数の実装

アクションフック(admin_init)に、HTTP リクエストを処理する関数をフックする。その関数の中で、プラグインの設定画面から飛んでくる HTTP リクエストを処理して、リダイレクト。パラメーターに正しく処理されたかどうかを付けとく。

こんな感じ。

4. プラグイン設定画面を描画する関数の実装

アクションフック(admin_menu)に、管理画面を表示する関数をフックする。その関数の中で、プラグインの設定画面(DB の値をアップデートするフォーム(<form>))を出力する。フォームの送り先(action属性)は、「admin_url( ‘options-general.php’ )」。

たとえば、こんな感じ。

アクションフック(admin_menu)→ plugin_menu() 関数 → option_form()関数、という流れ。

描画処理のはじめに、

のような感じで、処理内容に応じてメッセージを表示するようにすればそれっぽい。

ここまでの、

  1. プラグインオブジェクトの class 定義
  2. プラグインを初期化する関数の定義
  3. HTTP リクエストを処理する関数の定義
  4. プラグイン設定画面を描画する関数の定義

を実装すればプラグインの完成です。

まとめ

どんなプラグインでも基本的にこの構造で実装できる(はず)。

独自の DB テーブルを使うようなプラグインは、プラグイン有効化したときに、テーブルを作成したりなどの処理が必要になるけど、それ以外は、この構造でいけると思う。

基本的にはこの構造をベースにしつつ、ソースコード管理のために、関数を分けたり、ソースファイルを分けたりと適時修正すればおっけー。

でわでわ。







この記事にコメントする





Copyright © 2012 - 2014 MacBook Air とWordPressでこうなった All rights reserved
Powered by WordPress.