アクティベーション
アクティベーションフックを設定するには、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エラーが解消されます。
上記の例を見てみましょう:
/**
* 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' );
アクティベーションおよび非アクティベーションフックに関するさらなる情報については、以下の優れたリソースを参照してください:
- register_activation_hook() WordPress関数リファレンスにて。
- register_deactivation_hook() WordPress関数リファレンスにて。