概要
register_deactivation_hook
アクションは、プラグインがディアクティベート(無効化)される際に特定の関数を呼び出すために使用されます。このアクションは、プラグインが無効化されたときに必要なクリーンアップ作業やデータの保存、設定のリセットなどの処理を行う際に特に役立ちます。以下は、register_deactivation_hook
を用いて実装する際によく見られる機能の例です。
- データベースエントリの削除
- オプション設定のリセット
- カスタムユーザーロールの削除
- ストレージされたキャッシュの消去
- 送信された通知の取り消し
- フックやアクションの解除
- 環境設定のクリーンアップ
- 一時ファイルの削除
構文
register_deactivation_hook( $file, 'function_name' );
パラメータ
$file
(string): プラグインのメインファイルのパス。function_name
(callable): ディアクティベーション時に実行される関数名。
戻り値
- なし
関連する関数
利用可能なバージョン
このアクションは、WordPress 2.0.0以降で利用可能です。
コアファイルのパス
wp-includes/plugin.php
サンプルコード
サンプル1: オプションのリセット
function my_plugin_deactivate() {
delete_option('my_plugin_option');
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');
このコードは、プラグインが無効化された際に、my_plugin_option
というオプションを削除します。
サンプル2: カスタムテーブルの削除
function my_plugin_deactivate() {
global $wpdb;
$table_name = $wpdb->prefix . "my_custom_table";
$wpdb->query("DROP TABLE IF EXISTS $table_name");
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');
このサンプルでは、プラグインが無効化されたときにカスタムテーブルを削除します。
サンプル3: ユーザーロールの削除
function my_plugin_deactivate() {
$role = get_role('my_custom_role');
if ($role) {
remove_role('my_custom_role');
}
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');
こちらは、プラグインの無効化時にカスタムユーザーロールを削除するコードです。
サンプル4: キャッシュのクリア
function my_plugin_deactivate() {
if (function_exists('my_plugin_clear_cache')) {
my_plugin_clear_cache();
}
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');
このコードは、プラグインが無効化された時に、キャッシュクリア関数を呼び出します。
サンプル5: 一時データの削除
function my_plugin_deactivate() {
if (file_exists('path/to/temp/file')) {
unlink('path/to/temp/file');
}
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');
プラグイン無効化の際に、一時ファイルを削除するサンプルです。
この関数のアクションでの使用可能性
アクション名 | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
register_deactivation_hook
は特定のバージョンで非推奨または削除された情報はありません。