アクティブ化および非アクティブ化フックは、プラグインがアクティブ化または非アクティブ化されたときにアクションを実行する方法を提供します。
アクティベーション時に、プラグインはルーチンを実行して、書き換えルールの追加、カスタムデータベーステーブルの追加、またはデフォルトオプション値の設定を行うことができます。
非アクティブ化すると、プラグインはルーチンを実行して、キャッシュや一時ファイルやディレクトリなどの一時データを削除できます。
非アクティブ化フックはアンインストールフックと混同されることがあります。 アンインストールフックは、プラグインオプションやカスタムテーブルなどの削除など、すべてのデータを完全に削除するのに最適です。
有効化(アクティブ化)
アクティブ化フックをセットアップするには、register_activation_hook()関数を使用します。
register_activation_hook( __FILE__, 'pluginprefix_function_to_run' );
無効化(非アクティブ化)
非アクティブ化フックをセットアップするには、register_deactivation_hook()関数を使用します。
register_deactivation_hook( __FILE__, 'pluginprefix_function_to_run' );
これらの各関数の最初のパラメーターは、メインプラグインファイルを参照します。メインプラグインファイルは、プラグインヘッダーコメントを配置したファイルです。 通常、これらの2つの関数はメインプラグインファイル内からトリガーされます。 ただし、関数が他のファイルに配置されている場合は、メインプラグインファイルを正しく指すように最初のパラメーターを更新する必要があります。
例
アクティベーションフックの最も一般的な用途の1つは、プラグインがカスタム投稿タイプを登録するときに WordPress パーマリンクを更新することです。 これは厄介な 404 エラーを取り除きます。
これを行う方法の例を見てみましょう:
function pluginprefix_setup_post_type() {
// register the "book" custom post type
register_post_type( 'book', ['public' => 'true'] );
}
add_action( 'init', 'pluginprefix_setup_post_type' );
function pluginprefix_install() {
// trigger our function that registers the custom post type
pluginprefix_setup_post_type();
// clear the permalinks after the post type has been registered
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'pluginprefix_install' );
カスタム投稿タイプの登録に慣れていない場合でも、心配しないでください。これについては後で説明します。 この例は、非常に一般的であるという理由だけで使用されます。
上記の例を使用して、以下はこのプロセスを逆にしてプラグインを無効にする方法です:
function pluginprefix_deactivation() {
// 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_deactivation' );
アクティブ化および非アクティブ化フックに関する詳細については、次の優れたリソースを参照してください :
- WordPress 関数リファレンスの register_activation_hook()。
- WordPress 関数リファレンスの register_deactivation_hook()。