ようこそのお運びで、厚く御礼申し上げます。
30日目です。今回は、プラグイン作成というか、プラグインを作成するときに必要だろうなということを書いてみました。まだ初心者には必要なさそうだったのですが、作成していくとちょっと気になったので調べてみました。
プラグインの有効、無効、削除のときに処理を実行する。
話の発端、「前回までのカスタムフィールド枠を追加する」プログラムを書いているときに気がついたのですが、
「あれ、プラグインを無効にしてもカスタムフィールドの変数が残っている」
つまり、プラグインを停止しても、
データベースのデータの削除処理等は、おこなわれてなかったんですね。
あ・・・すっかりそのことを忘れていました。
今まで簡単な処理ばかりだったので、必要はなかったのですが、ちょっとデータを作成したり、データベースが関係したりすると必要になります。なので今回はそのことについて、先に書いておこうと思います。
今後必要になりそうなので。
今回はいきなりプラグインファイルに書いてみます。
ただし今回のスクリプトは、実行しても結果は見えませんので、説明のみで。
<?php /* Plugin Name: paka3_firststep Plugin URI: http://www.paka3.com/wpplugin Description: プラグインの有効化・停止・削除のテスト Author: Shoji ENDO Version: 0.1 Author URI:http://www.paka3.com/ */ if(function_exists('register_activation_hook')) { register_activation_hook (__FILE__, 'paka3_plugin_start'); } if(function_exists('register_deactivation_hook')) { register_deactivation_hook (__FILE__, 'paka3_plugin_stop'); } if(function_exists('register_uninstall_hook')) { register_uninstall_hook (__FILE__, 'paka3_plugin_end'); } function paka3_plugin_start(){ //die("CALL:paka3_plugin_start"); //プラグインを有効化したよ; //データベース・ファイルの作成など } function paka3_plugin_stop(){ //die("CALL:paka3_plugin_stop"); //プラグイン、停止したよ; //データの初期化など } function paka3_plugin_end(){ //die("CALL:paka3_plugin_end"); //プラグイン、削除したよ; //作成したデータベース・データ・ファイルの削除など } ?>
ポイントはどこ?
- function_exists:指定した関数が定義されている場合にTRUEを返す。
※最新版だけなら、このif文はいらないかも。if(function_exists('register_activation_hook')) { //register_activation_hookがあれば実行する }
- register_activation_hook($file, $function)
プラグインが有効にした時に呼び出される。
プラグインで使う、データベースにテーブルを作成、初期データ、ファイルを生成したりする命令文を記述 - register_deactivation_hook($file, $function)
プラグインを無効にした時に呼び出される。
データの初期化等かな - register_uninstall_hook($file, $function)
プラグインをアンインストール(削除)にした時に呼び出される。 - __FILE__はプラグインファイルを置いていあるファイルパスです。
クラス定義したほうが、やっぱり重複の心配が減ります。
クラス定義をしてみました。実際にいつ呼び出されるか確認する場合はdie()のコメントアウトをはずしてみてください。
<?php /* Plugin Name: paka3_firststep Plugin URI: http://www.paka3.com/wpplugin Description: プラグインの有効化・停止・削除のテスト Author: Shoji ENDO Version: 0.1 Author URI:http://www.paka3.com/ */ //クラスオブジェクトの生成 new Paka3FirstStep; //クラス定義 class Paka3FirstStep{ public function __construct() { if(function_exists('register_activation_hook')) { register_activation_hook (__FILE__, array($this, 'paka3_plugin_start')); } if(function_exists('register_deactivation_hook')) { register_deactivation_hook (__FILE__, array($this, 'paka3_plugin_stop')); } if(function_exists('register_uninstall_hook')) { register_uninstall_hook (__FILE__, array($this, 'paka3_plugin_end')); } } public function paka3_plugin_start(){ //die("CALL:paka3_plugin_start"); //インストールしたよ; //データベース・ファイルの作成など } public function paka3_plugin_stop(){ //die("CALL:paka3_plugin_stop"); //プラグイン、停止したよ; //データの初期化など } public function paka3_plugin_end(){ //die("CALL:paka3_plugin_end"); //プラグイン、削除したよ; //作成したデータベース・データ・ファイルの削除など } } ?>
今回のまとめ
今回調べてみて、この項目ってプラグイン作成の基本ってことで紹介されているブログ等が多かったです、テヘっ。でも、実際になくても少しは作って来れたのだから…覚える方は大変ですね、やっぱり。でも、必要なときに使えるよう、頭の片隅に入れておいた方が良さそうです。