説明
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

コメント