ワードプレスのregister_deactivation_hookアクションの使用方法・解説

概要

register_deactivation_hookアクションは、プラグインがディアクティベート(無効化)される際に特定の関数を呼び出すために使用されます。このアクションは、プラグインが無効化されたときに必要なクリーンアップ作業やデータの保存、設定のリセットなどの処理を行う際に特に役立ちます。以下は、register_deactivation_hookを用いて実装する際によく見られる機能の例です。

  1. データベースエントリの削除
  2. オプション設定のリセット
  3. カスタムユーザーロールの削除
  4. ストレージされたキャッシュの消去
  5. 送信された通知の取り消し
  6. フックやアクションの解除
  7. 環境設定のクリーンアップ
  8. 一時ファイルの削除

構文

register_deactivation_hook( $file, 'function_name' );

パラメータ

  • $file (string): プラグインのメインファイルのパス。
  • function_name (callable): ディアクティベーション時に実行される関数名。

戻り値

  • なし

関連する関数

register_deactivation_hook

利用可能なバージョン

このアクションは、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は特定のバージョンで非推奨または削除された情報はありません。

この関数について質問する


上の計算式の答えを入力してください