init フックの使い方|説明・引数・注意点

説明

init は、WordPressの読み込みが完了し、ユーザー認証の後・ページ出力の前に実行されるアクションです。投稿タイプやタクソノミーの登録など、初期化処理の定番のタイミングです。

基本構文

do_action( 'init' )

引数

引数はありません。

戻り値

引数はありません。

使い方(サンプル)

add_action( 'init', function() {
	register_post_type( 'news', array( 'public' => true ) );
} );

注意点

  • register_post_type() や register_taxonomy() はここで呼びます。
  • 管理画面・フロント・Ajaxなど、すべてのリクエストで実行されます。

実務での使いどころ

  • カスタム投稿タイプや、カスタムタクソノミーを、登録するとき。
  • ショートコードや、リライトルールを、登録するとき。
  • ユーザーが確定した、あとの初期化の処理を、行うとき。

よくあるミスと対処

  • 重い処理を書いている。init は、すべてのリクエストで、実行される。
  • 出力(echo)をしている。まだ、HTMLの出力を始める前の段階。
  • 投稿タイプの登録を、plugins_loaded など、早すぎるフックで行っている。登録は init で行う。
  • flush_rewrite_rules() を、毎回呼んでいる。

NG例

add_action( 'init', function () {
	register_post_type( 'news', array( 'public' => true ) );
	flush_rewrite_rules(); // 毎回のリクエストで、実行される
} );

OK例

add_action( 'init', function () {
	register_post_type( 'news', array( 'public' => true ) );
} );

使い分け早見表

フック 実行されるタイミング(早い順)
plugins_loaded プラグインの読み込みが、終わったとき
init WordPressの初期化が、終わったとき
wp_loaded すべての準備が、終わったとき

関連項目

wp_loaded、after_setup_theme、register_post_type()

公式リファレンス:init | WordPress Developer Resources

コメント

タイトルとURLをコピーしました