目次
管理画面かどうかの条件判定
管理画面の特定のページに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_template_directory_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/