管理画面内の特定のページを条件に分岐する際に便利な$hook_suffixについてのメモページです。
主な$hook_suffix一覧
$hook_suffixについては、公式でも特に一覧のようなものは存在しませんので、以下に手作業で抽出した$hook_suffixと、個別ページの$hook_suffixを調べるためのコードを示しておきます。
WordPress標準ページの$hook_suffix
※実際のサイトで画面を1つ1つ確認しましたが、このほかにもページが存在するかも知れません
| $hook_suffixのスラグ | 画面 |
|---|---|
| index.php | ダッシュボード |
| update-core.php | WordPressの更新画面 |
| edit.php | 投稿・固定ページ・カスタム投稿タイプ・パターン一覧 |
| post-new.php | 投稿・固定ページ・カスタム投稿タイプ・パターンの新規追加 |
| post.php | 投稿・固定ページ・カスタム投稿タイプ・パターン・メディアの編集 |
| edit-tags.php | カテゴリー・タグ・カスタムタクソノミー一覧 |
| term.php | カテゴリー・タグ・カスタムタクソノミーの編集画面 |
| upload.php | メディア一覧 |
| media-new.php | メディアのアップロード(新規追加) |
| edit-comments.php | コメント一覧 |
| comment.php | コメントの編集 |
| themes.php | テーマ一覧とテーマの詳細 |
| theme-install.php | テーマの新規追加 |
| nav-menus.php | メニューの編集 |
| widgets.php | ウィジェット設定 |
| plugins.php | プラグイン一覧とプラグインの詳細 |
| plugin-install.php | プラグインの新規追加 |
| update.php | 更新の確認画面(プラグインだけではないかも) |
| users.php | ユーザー一覧 |
| user-new.php | ユーザーを追加 |
| profile.php | プロフィール |
| tools.php | ツール |
| import.php | インポート |
| export.php | エクスポート |
| site-health.php | サイトヘルス |
| export-personal-data.php | 個人データのエクスポート |
| erase-personal-data.php | 個人データの消去 |
| theme-editor.php | テーマファイルエディター |
| plugin-editor.php | プラグインファイルエディター |
| options-general.php | 一般設定 |
| options-writing.php | 投稿設定 |
| options-reading.php | 表示設定 |
| options-discussion.php | ディスカッション設定 |
| options-media.php | メディア設定 |
| options-permalink.php | パーマリンク設定 |
| options-privacy.php | プライバシー設定 |
個別のページの$hook_suffixを調べる
プラグインごとの設定ページなど個別のページは、以下のコードを有効化しているテーマのfunctions.phpへ追加した後に各ページを開くと確認できます(前項の$hook_suffixの一覧もこのコードで調べました)。
/***** hook_suffixを各ページに表示する *****/
function pwcn_print_current_pagehook(){
global $hook_suffix;
if( !current_user_can( 'manage_options') ) return;
echo '<div class="updated"><p>hook_suffix : ' . esc_html($hook_suffix) . '</p></div>';
}
add_action('admin_notices', 'pwcn_print_current_pagehook');
$hook_suffixを使った条件分岐の仕方
実はこちらの公式サイトの検索結果にある通り、直接的にフックに付帯させて条件分岐するフックは多くありませんから、実用としては、以下のような条件分岐を使って判別させるのが適当でしょう。
1つの$hook_suffixに合致するものに対して条件に合致した場合の処理をさせるには、
global $hook_suffix;
if ( '$hook_suffixのスラグ' === $hook_suffix ) {
/*** ここに条件に合致した場合の処理を書く ***/
}
というようにし、2つ以上の場合は「||」(PHPでまたはという意味)で区切って追加すればいいでしょう。
global $hook_suffix;
if ( '$hook_suffixのスラグ' === $hook_suffix || '$hook_suffixのスラグ' === $hook_suffix ) {
}
例えば、「index.php(ダッシュボード)」に対してのみスタイルを与えたいといった場合には、以下のようにすればいいでしょう。
function index_php_style_init(){
global $hook_suffix;
if ( 'index.php' === $hook_suffix ) {
?>
<style>
background:#000;
</style>
<?php
}
}
add_action('admin_head','index_php_style_init');
ちなみに「admin_head」フックには$hook_suffixを付与して処理させることができるので、以下のように書いても同じことなのですが、前述した通り使えるフックが少ないので、上記の書き方で統一すると管理しやすいと思います。
function index_php_style_init(){
?>
<style>
background:#000;
</style>
<?php
}
add_action('admin_head-index.php','index_php_style_init');











コメントを残す