有効化フックと無効化フックは、プラグインが有効化または無効化された際にアクションを実行する方法を提供します。
- 有効化時 に、プラグインは書き換えルールを追加したり、カスタムデータベーステーブルを追加したり、デフォルトのオプション値を設定したりするルーチンを実行できます。
- 無効化時 に、プラグインはキャッシュや一時ファイルやディレクトリのような一時データを削除するルーチンを実行できます。
時々、無効化フックは、アンインストール・フックと混同されます。アンインストールフックは、プラグインオプションやカスタムテーブルなどを削除するような、すべてのデータを永久に削除する 場合に最適です。
有効化
有効化フックを設定するには、関数 register_activation_hook() を使用します:
register_activation_hook(
__FILE__,
'pluginprefix_function_to_run'
);
無効化
無効化フックを設定するには、関数 register_deactivation_hook() を使用します:
register_deactivation_hook(
__FILE__,
'pluginprefix_function_to_run'
);
これらの関数の最初のパラメータは、プラグイン・ヘッダーコメントを配置した、メイン・プラグイン・ファイルを参照します。通常、これら2つの関数はメイン・プラグイン・ファイルの中からトリガーされます。しかし、これらの関数が他のファイルに配置されている場合は、メイン・プラグイン・ファイルを正しく指すように、最初のパラメータを更新する必要があります。
例
有効化フックの最も一般的な使い方のひとつは、プラグインがカスタム投稿タイプを登録する際、WordPress のパーマリンクをリフレッシュすることです。これにより、やっかいな404エラーを取り除くことができます。
では、その方法の例を見てみましょう:
/**
* Register the "book" custom post type
*/
function pluginprefix_setup_post_type() {
register_post_type( 'book', ['public' => true ] );
}
add_action( 'init', 'pluginprefix_setup_post_type' );
/**
* Activate the plugin.
*/
function pluginprefix_activate() {
// Trigger our function that registers the custom post type plugin.
pluginprefix_setup_post_type();
// Clear the permalinks after the post type has been registered.
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'pluginprefix_activate' );
カスタム投稿タイプの登録に慣れていない人、ご心配なく – 後で説明します。この例はごく一般的なものですので、簡単に紹介します。
上記の例を使って、このプロセスを逆にして、プラグインを無効にする方法を以下に示します:
/**
* Deactivation hook.
*/
function pluginprefix_deactivate() {
// Unregister the post type, so the rules are no longer in memory.
unregister_post_type( 'book' );
// Clear the permalinks to remove our post type's rules from the database.
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'pluginprefix_deactivate' );
有効化フックと無効化フックに関する詳しい情報については、ここにいくつかの優れたリソースがあります:
- WordPress 関数リファレンスの register_activation_hook()
- WordPress 関数リファレンスの register_deactivation_hook()