管理画面かどうかの条件判定

管理画面の特定のページにCSSを追加したくて(ダッシュボードなんですけど)調べたのでメモ。まずは管理画面かどうかの全体の判定は、以下の通りです。

if ( is_admin() ) {
    // 管理画面で実行したい処理
}

これでWebサイトの表示部分と管理画面(wp-admin の部分)とを切り分けできます。

管理画面のどのページかを判定して分岐したい

実際にやりたいことは、管理画面のダッシュボードにCSSを追加したいということなので、ダッシュボードだったらという判定をしたいわけで。そこで、WordPressのグローバル変数$pagenowを使用して判定します

if ( is_admin() ) {
    global $pagenow;
    if ( $pagenow === 'index.php' ) {
        // ダッシュボードでやりたい処理
    }
}

$pagenowの値がindex.phpの場合は、ダッシュボードとなるので条件が真になります。管理画面の各ページの判定は以下の通りです。

$pagenowの値ページの種類
index.phpダッシュボード
post.php投稿、固定ページ編集画面
post-new.php新規投稿画面
edit.php投稿一覧
edit-tags.phpカテゴリ・タグ編集
upload.phpメディア一覧
media-new.phpメディアアップロード
profile.phpプロフィール
tools.phpツール
options-general.php設定
wp-login.phpログイン画面
admin.phpプラグインやテーマで拡張したページ

おぼえなくても管理画面のURL(PHPのファイル名)を確認すればよいですね。

ダッシュボードにCSSファイルを追加したい

で、最終的にやりたいことが以下の通り。

function custom_admin_enqueue() {
    global $pagenow;
    if ( $pagenow === 'index.php' ) {
        wp_enqueue_style( 'custom_admin_enqueue', get_theme_file_uri( '/custom-admin.css' ) );
    }
}
add_action( 'admin_enqueue_scripts', 'custom_admin_enqueue' );

できた!\(^o^)/
is_adminで管理画面の判定を入れるのでは?と思うのですが、フックポイントのadmin_enqueue_scriptsが、そもそも管理画面でしか発動しないのでページの条件判定だけでよいようです。

参考サイト

admin_enqueue_scripts | WordPress.org
https://developer.wordpress.org/reference/hooks/admin_enqueue_scripts/