読者です 読者をやめる 読者になる 読者になる

【wordpress】プラグインのクラス化

概要

wordpressプラグインをクラス化する場合に必要な情報です。

プラグインのクラス化

コンストラクタでhookを登録し、処理を実装します。

class XXX_Plugin
{
    // hookを登録します
    public function __construct() {
    }
}
new XXX_Plugin();

action hookへ関数を登録する場合には、呪文が必要になります。

array( $this, メソッド名 )

【参考】 関数リファレンス/add action - WordPress Codex 日本語版

メソッド呼び出しには$thisを付ける必要があります。

【参考】 WordPressプラグインをクラス定義する方法 | Developers.IO

定数の使い方

クラス化しない場合には、defineを使って定数を宣言します。この定数名はグローバルなので名前の生得に気を付ける必要がありました。クラス化するとクラス変数になるため、名前の衝突は気にしなくて済みます。

定数にはクラス変数としてアクセスする必要があります。

class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

【参考】 PHP: オブジェクト定数 - Manual

プラグインの有効化/無効化/削除で処理を実行する

それぞれのhookを実装します。

  • register_activation_hook
  • register_deactivation_hook
  • register_uninstall_hook

【参考】 WordPress でプラグインを無効化したときにオプションを消すには

これらのイベントでデータベースの作成・削除を行うことが多いと思います。

【参考】 WordPressのプラグインでデータベースを作成・削除・アップデートする方法

データベース作成が失敗した場合には、SQLコマンドの大文字化をしてみるよ良いかもしれません。

【参考】 WordPress の dbDelta() でテーブルが作成されない

uninstall_hookは、インスタンスがなくなっているのでstaticメソッドとして実装する必要があります。

【参考】 register_uninstall_hook でのクラスメソッド呼び出し – セルティスラボ