管理バーに $hook_suffix の値を表示する
admin_head
や admin_footer
といったいくつかのアクションでは特定の画面にのみ処理を適用するための仕組みが用意されており、基本的にはアクション名の後ろに「-
」(ハイフン)と「post.php」(投稿 編集画面)「post-new.php」(投稿 新規画面)「edit.php」(投稿 一覧画面)のような画面ファイル名をつけることで画面を特定できるようになっています。
- 例: 投稿画面の公開ボタンを押した時に確認メッセージを表示する
- 投稿画面にのみJavaScriptを適用するために「admin_footer-post.php」(投稿 編集画面)「admin_footer-post-new.php」(投稿 新規画面) を使用しています。
上記のファイル名の部分は「$hook_suffix
」などと呼ばれますが、どの画面でどの値を使えばいいかがわかりづらい(特にプラグインの設定ページなどだと使える値がファイル名ではない)ため$hook_suffix
を調べるためのサポートとして管理バーに $hook_suffix
の値を表示するとよいかもしれません。これには、functions.phpに下記のように記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/** * 管理バーのメニューに $hook_suffix の値を表示します。 */ function admin_bar_menu_hook_suffix( $wp_admin_bar ) { global $hook_suffix; if ( ! is_admin() ) return; $wp_admin_bar->add_menu(array( 'id' => 'hook-suffix', 'title' => '$hook_suffix : ' . $hook_suffix, 'parent' => false, )); } add_action( 'admin_bar_menu', 'admin_bar_menu_hook_suffix', 100 ); |
結果
補足
- 「admin_headを特定のページでのみ使用するにはhook_suffixを知るべし | Firegoby」さんで言及されていますが、一部の
$hook_suffix
は言語によって変わるようです。WordPress 4.5.3時点ではadd_menu_page()
で追加したプラグインページ(トップレベル)は「toplevel_page_{メニュースラッグ名}」、add_submenu_page()
で追加したプラグインページ(サブ)は「{トップレベルのメニュー名をsanitize_title()した値}_page_{メニュースラッグ名}」になっているため、サブの $hook_suffix を確実に特定するのは少し手間がかかります。(get_plugin_page_hookname()
を利用することで確実に$hook_suffix
の値を取得することができますが、そこまで必要になるケースはあまりない気がします)