Wordpressプラグインをプライベートで作成するしていくのに、メモを残しています。
今回は、プラグインを有効にした時、停止した時、アンイストールした時に何か処理を実行したいという願望を叶える雛形です。
特にDatabaseをいじる場合に、停止した時と、アンインストールした時の処理をどうするか悩みがちです。アンインストールの時は確実に、汚したDatabaseを綺麗にしてから消滅しましょう。
1 2 3 4 5 6 |
/* 有効にした時に引数で指定したファンクションを実行 */ <?php register_activation_hook( $file, $function ); ?> /* 停止した時に引数で指定したファンクションを実行 */ <?php register_deactivation_hook($file, $function); ?> /* アンインストールした時に引数で指定したファンクションを実行 */ <?php register_uninstall_hook($file, $callback) ?> |
アクションフックやフィルターではなく、独立したファンクションで用意されてるのが特徴です。
使用用途としては、データーベースの使用や外部ファイルでデータを保存する場合に、有効時に初期化がてら作成し、アンインストールにスッキリ綺麗に削除して、立つ鳥後を濁さないプラグイン開発を続けていきたいものですね。
プラグインはクラスで作っていくと変数名の名前被りを気にしなくて良くなるので、これらのファンクションは、クラスのコンストラクト突っ込んでおくといいでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php class PluginDeveloper { public function __construct() { /* 有効にした時に引数で指定したファンクションを実行 */ if (function_exists('register_activation_hook')) { register_activation_hook(__FILE__, array(&$this, 'activation')); } /* 停止した時に引数で指定したファンクションを実行 */ if (function_exists('register_deactivation_hook')) { register_deactivation_hook(__FILE__, array(&$this, 'deactivation')); } /* アンインストールした時に引数で指定したファンクションを実行 */ if (function_exists('register_uninstall_hook')) { register_uninstall_hook(__FILE__, 'PluginDeveloper_Uninstall'); } } function activation() { /* 有効にした時の処理 */ } function deactivation() { /* 停止にした時の処理 */ } } function PluginDeveloper_Uninstall() { /* アンインストールにした時の処理 */ } ?> |
register_uninstall_hook はクラスのメソッドをコールさせようとするとエラーが出るのでクラス外にアンインストール用の関数を置かなければいけません。Wordpressがプラグインのクラスを unset するタイミングの問題だと思います。
おわり
コメント
[…] http://blog.it.churaumi.tv […]
[…] 実際に書くのならこんな感じのクラスになるかと思う。 参考: ・【Wordpress】【プラグイン開発】プラグインの有効、停止、アンイストールの時に処理をかます方法 – 紐付けな日々 […]