register_uninstall_hook() の使い方|説明・引数・注意点

説明

register_uninstall_hook() は、プラグインが削除(アンインストール)されたときに実行する関数を登録する関数です。

基本構文

register_uninstall_hook( string $file, callable $callback ): void

引数

  • $file:プラグインのメインファイルのパス
  • $callback:静的メソッドまたは関数名(クロージャは不可)

戻り値

戻り値はありません。

使い方(サンプル)

register_uninstall_hook( __FILE__, 'myplugin_uninstall' );
function myplugin_uninstall() {
	delete_option( 'myplugin_version' );
}

注意点

  • クロージャは使えません。
  • 代わりに、プラグインフォルダの uninstall.php を使う方法もあります。両方は使いません。

実務での使いどころ

  • プラグインを、削除したときに、保存したデータ(オプション、独自のテーブル)を、消すとき。

よくあるミスと対処

  • コールバックに、無名関数(クロージャ)を渡している。登録情報は、データベースに保存されるが、クロージャはシリアライズできず、エラーになる場合がある。関数名の文字列か、静的メソッドを指定する。
  • フックの中で、呼んでいる。ファイルの直下で、呼ぶ。
  • uninstall.php がある場合は、uninstall.php だけが実行され、register_uninstall_hook() で登録した関数は呼ばれない。どちらか一方にする。
  • データを消す処理で、権限や、確認を考えていない。

NG例

register_uninstall_hook( __FILE__, function () {
	delete_option( 'my_setting' ); // 無名関数は、使えない
} );

OK例

register_uninstall_hook( __FILE__, 'my_uninstall' );
function my_uninstall() {
	delete_option( 'my_setting' );
}

使い分け早見表

フック 実行されるタイミング
register_uninstall_hook() プラグインを、削除したとき
register_deactivation_hook() プラグインを、無効化したとき
uninstall.php 削除時に実行される、専用のファイル(フックの代わり)

関連項目

register_activation_hook()、register_deactivation_hook()、delete_option()

公式リファレンス:register_uninstall_hook() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました