Вопрос или проблема
Я использую это для загрузки css-стилей в админской области (для любого пользователя, который не является администратором):
function wpse_admin_styles() {
if ( !current_user_can( 'manage_options' ) ) {
echo '<style>
.fun-stuff-here {color:aqua;}
</style>
';
}
}
add_action('admin_head', 'wpse_admin_styles');
Но мне нужно, чтобы некоторые стили загружались только в том случае, если просматриваемая админская страница является страницей (а не записью или записью пользовательского типа)
Это возможно? Я думаю, что ответ, выбранный в этом вопросе WPSE, имеет некоторый потенциал, но я не знаю, как добавить необходимый код к тому, что у меня есть: Как добавить админскую функцию только к записям, а не страницам?
Я также наткнулся на этот пост на форуме поддержки WordPress. Ответ ОП внизу (8-й пост сверху) выглядел многообещающим, но на практике он применяет CSS ко всем разделам Страниц, Записей и Пользовательского типа записей: http://wordpress.org/support/topic/add-new-page-button-in-admin-area
Как на фронтенде в WordPress, на админских страницах добавляются различные css-классы к тегу <body>
.
Вы можете использовать:
body.post_type-page .fun-stuff-here {
color:aqua;
}
Держите ваше действие таким же – CSS будет загружен повсюду в админке, но станет актуальным только в разделе Страницы
.
(Существует post_type-...
для каждого.)
Я столкнулся с похожей проблемой, в конце концов я решил ее, вызвав основной CSS файл фронтенда и создав специальные ID для админских вещей, как так:
function your_css() {
wp_register_style('your_css', plugins_url('style.css',__FILE__ ));
wp_enqueue_style('your_css');
}
add_action( 'init','your_css');
Функции wp_register_style
& wp_enqueue_style
являются хуками/обработчиками WordPress для получения css файла, вместо того, чтобы вставлять css код в вашу функцию 😉
Убедитесь, что она находится в корневом файле плагина!
У меня возникла проблема с конфликтом двух css файлов, поэтому я все еще с этим возюсь, но, по крайней мере, ваш css файл вызывается и (частично) применяется. Удачи!
Ответ или решение
Чтобы добавить CSS стили только для страниц в админ-панели WordPress (в отличие от записей или пользовательских типов записей), необходимо использовать фильтры и условные функции, которые предоставляет WordPress. В данной инструкции мы расскажем, как это сделать шаг за шагом.
Шаг 1: Определение нужного условия
Первый шаг — это выявить, на какой странице вы находитесь в админ-панели. WordPress добавляет определенные классы к тегу <body>
на админ-страницах, что позволяет нам использовать их для условной загрузки стилей. Например, для страниц у вас будет класс post-type-page
.
Шаг 2: Создание функции для добавления стилей
Ваша текущая функция wpse_admin_styles
выполняет хорошую работу, но нам нужно добавить условие, чтобы она загружала стили только на страницах.
Вот как может выглядеть ваша улучшенная функция:
function wpse_admin_styles() {
// Проверка, является ли пользователь администратором
if ( !current_user_can( 'manage_options' ) ) {
// Проверка, находится ли пользователь на странице редактирования страницы
$current_screen = get_current_screen();
if ($current_screen->post_type === 'page') {
echo '<style>
.fun-stuff-here {color:aqua;}
</style>';
}
}
}
add_action('admin_head', 'wpse_admin_styles');
Шаг 3: Понимание кода
-
Проверка прав пользователя: Мы проверяем, является ли пользователь администратором с помощью функции
current_user_can( 'manage_options' )
. Если это так, функция завершается и стили не загружаются. -
Получение текущего экрана: Функция
get_current_screen()
возвращает объект текущего экрана. Мы проверяем свойствоpost_type
, чтобы убедиться, что мы находимся на странице. -
Вывод CSS стилей: Если все проверки пройдены, мы выводим стили непосредственно в заголовок админки.
Заключение
Теперь, когда вы примените этот код, стили будут загружаться только на страницах админ-панели, исключая записи и пользовательские типы записей.
Таким образом, благодаря использованию условий, предоставляемых функцией get_current_screen()
, вы можете точно нацелить свои CSS стили на определенные типы контента в админке.
Оптимизация и улучшение
Если вы планируете добавить более сложные стили, вместо непосредственного написания CSS кода в функции вы можете зарегистрировать и подключить свой файл стилей. Это позволит вам более удобно управлять стилями.
Пример регистрации стилей может выглядеть следующим образом:
function wpse_enqueue_admin_style() {
if ( !current_user_can( 'manage_options' ) ) {
$current_screen = get_current_screen();
if ($current_screen->post_type === 'page') {
wp_enqueue_style('my_custom_admin_style', plugins_url('css/my-style.css', __FILE__));
}
}
}
add_action('admin_enqueue_scripts', 'wpse_enqueue_admin_style');
Не забудьте создать файл my-style.css
в директории вашего плагина или темы.
Это решение не только упростит вашу работу с CSS, но также улучшит производительность за счет кэширования файлов стилей.