【WordPress】プラグインの有効、停止、アンイストールの時に処理を書くフック【PHP】

  • 投稿 : 2016-11-26
//有効
register_activation_hook(__FILE__, 'my_activation'); 
//停止
register_deactivation_hook(__FILE__, 'my_deactivation');
//アンインストール
register_uninstall_hook(__FILE__,'my_uninstall');
関数リファレンス/register activation hook - WordPress Codex 日本語版
関数リファレンス/register deactivation hook - WordPress Codex 日本語版
register_uninstall_hook() | Function | WordPress Developer Resources

フックの仕方は上記のようにします。

//有効
register_activation_hook(__FILE__, array($this, 'activation'));
//停止
register_deactivation_hook(__FILE__, array($this, 'deactivation'));
//アンインストール
register_uninstall_hook(__FILE__, array('クラス名::uninstall'));

クラス化してるときは、上記のように書きます。
register_uninstall_hookに指定するコールバック関数は、staticなクラスメソッド(関数)でないとエラーになるようです。
もちろん、register_uninstall_hookの時だけ普通の関数を呼び出すようにしてもよいかと思います。

class Sample_Plugin {

    function __construct() {
        register_activation_hook( __FILE__, array($this, 'activation') );
        register_deactivation_hook( __FILE__, array($this, 'deactivation') );
        register_uninstall_hook( __FILE__, array('Sample_Plugin::uninstall') );
    }
 
    public function activation(){
        //有効時の処理
    }
 
    public function deactivation(){
        //停止時の処理
    }
 
    public static function uninstall(){
        //アンインストールの処理
    }
}

new Sample_Plugin();

実際に書くのならこんな感じのクラスになるかと思う。


参考:
【Wordpress】【プラグイン開発】プラグインの有効、停止、アンイストールの時に処理をかます方法 – 紐付けな日々

register_uninstall_hook()の第2引数は「クラス名::メソッド名」の形式となっていますが、これは、uninstallのフック関数がstaticメソッドのためです。
WordPressプラグインの開発(3) | 合同会社 緑IT事務所

$callback
(callable) (Required) The callback to run when the hook is called. Must be a static method or function.
register_uninstall_hook() | Function | WordPress Developer Resources

ちゃんと、statcメソッドか関数でって明記されてますね。

スポンサーリンク