説明
register_activation_hook() は、プラグインが有効化されたときに、1度だけ実行する関数を登録する関数です。テーブル作成や初期設定に使います。
基本構文
register_activation_hook( string $file, callable $callback ): void
引数
$file:プラグインのメインファイルのパス(通常__FILE__)$callback:有効化時に実行する関数
戻り値
戻り値はありません。
使い方(サンプル)
register_activation_hook( __FILE__, 'myplugin_activate' );
function myplugin_activate() {
add_option( 'myplugin_version', '1.0' );
}
注意点
- プラグインのメインファイルの最上位(フック内ではなく直接)で呼び出します。
- アップデート時には実行されません。
- マルチサイトでは、ネットワーク有効化時の扱いに注意が必要です。
実務での使いどころ
- プラグインを、有効化したときに、一度だけ行う処理(テーブルの作成、初期設定、リライトルールの更新)を、書くとき。
よくあるミスと対処
- 第1引数に、メインのプラグインファイルの
__FILE__を渡していない。別のファイルの__FILE__では、動かない。 - フックの中や、関数の中で呼んでいる。ファイルの直下(最上位)で、呼ぶ。
- プラグインの更新では、呼ばれない。更新時の処理は、別に用意する。
- カスタム投稿タイプの登録の前に、
flush_rewrite_rules()を呼んでいる。 - テーマには使えない。テーマには、
after_switch_themeフックを使う。
NG例
add_action( 'init', function () {
register_activation_hook( __FILE__, 'my_activate' ); // フックの中では、動かない
} );
OK例
register_activation_hook( __FILE__, 'my_activate' );
function my_activate() {
my_register_post_types();
flush_rewrite_rules();
}
使い分け早見表
| フック | 実行されるタイミング |
|---|---|
register_activation_hook() |
プラグインを、有効化したとき |
register_deactivation_hook() |
プラグインを、無効化したとき |
register_uninstall_hook() |
プラグインを、削除したとき |
関連項目
register_deactivation_hook()、register_uninstall_hook()、flush_rewrite_rules()
公式リファレンス:register_activation_hook() | Function | WordPress Developer Resources

コメント