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

説明

register_deactivation_hook() は、プラグインが無効化されたときに実行する関数を登録する関数です。

基本構文

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

引数

  • $file:プラグインのメインファイルのパス
  • $callback:無効化時に実行する関数

戻り値

戻り値はありません。

使い方(サンプル)

register_deactivation_hook( __FILE__, function() {
	wp_clear_scheduled_hook( 'myplugin_daily' );
} );

注意点

  • データ削除は無効化ではなくアンインストール時に行うのが一般的です。
  • スケジュールイベントの解除などに向いています。

実務での使いどころ

  • プラグインを、無効化したときに、後片付け(定期実行の解除、リライトルールの更新)を、行うとき。

よくあるミスと対処

  • データを削除している。無効化は、一時的なことが多い。データの削除は、アンインストール(削除)時に行う。
  • 第1引数に、メインのプラグインファイルの __FILE__ を渡していない。
  • フックの中で呼んでいる。ファイルの直下で、呼ぶ。
  • 定期実行を、解除していない(wp_clear_scheduled_hook())。

NG例

register_deactivation_hook( __FILE__, function () {
	delete_option( 'my_setting' ); // 無効化しただけで、設定が消える
} );

OK例

register_deactivation_hook( __FILE__, function () {
	wp_clear_scheduled_hook( 'my_daily_task' );
	flush_rewrite_rules();
} );

使い分け早見表

フック 実行されるタイミング
register_deactivation_hook() プラグインを、無効化したとき
register_activation_hook() プラグインを、有効化したとき
register_uninstall_hook() プラグインを、削除したとき

関連項目

register_activation_hook()、register_uninstall_hook()、wp_clear_scheduled_hook()

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

コメント

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