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

説明

admin_init は、管理画面の初期化時に実行されるアクションです。設定の登録などに使います。

基本構文

do_action( 'admin_init' )

引数

引数はありません。

戻り値

引数はありません。

使い方(サンプル)

add_action( 'admin_init', function() {
	register_setting( 'my_group', 'my_option' );
} );

注意点

  • 管理画面のページ(Ajaxを含む)でのみ実行されます。
  • フロントのリクエストでは実行されません。

実務での使いどころ

  • 管理画面の読み込み時に、設定の登録(register_setting())や、管理画面専用の初期化を、行うとき。
  • 権限に応じた、管理画面のリダイレクトを行うとき。

よくあるミスと対処

  • 管理画面のページの表示にだけ、実行されると考えている。Ajax(admin-ajax.php)や、admin-post.php でも、実行される。
  • フロントの処理に使っている。フロントでは、実行されない。
  • 管理画面のリダイレクトなどを書き、フロントから使われるAjax(admin-ajax.php)まで、巻き込んで壊してしまう。wp_doing_ajax() で除外する。
  • 出力(echo)をしている。まだ、HTMLの出力を始める前の段階。

NG例

add_action( 'admin_init', function () {
	echo '設定を読み込みました'; // 出力を始める前の段階
} );

OK例

add_action( 'admin_init', function () {
	register_setting( 'my_group', 'my_option', array( 'sanitize_callback' => 'sanitize_text_field' ) );
} );

使い分け早見表

フック 実行されるタイミング
admin_init 管理画面の読み込み時(Ajaxも含む)
admin_menu 管理画面のメニューを作るとき
admin_enqueue_scripts 管理画面のCSS・JavaScriptを読み込むとき

関連項目

init、admin_menu

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

コメント

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