Правильный способ подключения таблицы стилей для панелей в WordPress
Какой правильный способ подключить таблицу стилей для панелей настроек в wp-admin для плагина или темы? То есть — таблицу стилей, которая стилизует сами панели.
В моем шаблоне панели я делаю примерно следующее...
<style type="text/css">
@import url("../wp-content/plugins/myplugin/panels/style.css");
</style>
...но подозреваю, что это может не работать на некоторых установках WordPress из-за различий в путях, а также может перестать работать в будущем, если WordPress решит переименовать папку wp-content во что-то другое.

function load_myplugin_wp_admin_style(){
// Регистрируем и подключаем CSS стили для админ-панели плагина
wp_register_style( 'myplugin_wp_admin_css', plugins_url( '/myplugin/panels/style.css' ), false, '1.0.0' );
wp_enqueue_style( 'myplugin_wp_admin_css' );
}
// Добавляем действие для загрузки стилей в админ-панели
add_action('admin_enqueue_scripts', 'load_myplugin_wp_admin_style');

Лучшим способом подключения стилей для административной части является использование хука, специфичного для страницы внешнего вида, с применением admin_print_styles-{hook}
, где {hook}
= {admin_page}-{menu_slug}
.
Предполагаю:
- Это тема
- Вы правильно используете страницу внешнего вида через
add_appearance_page()
- Ваш
$menu_slug
— этоwpse48416-settings
Хук в этом случае будет: admin_print_styles-appearance_page_wpse48416-settings
:
<?php
function wpse48416_admin_style(){
wp_register_style( 'wpse48416_admin_css', get_template_directory_uri() . '/css/admin.css' );
wp_enqueue_style( 'wpse48416_admin_css' );
}
add_action( 'admin_print_styles-appearance_page_wpse48416-settings', 'wpse48416_admin_style' );
?>
Для плагина достаточно использовать правильную строку {page}
, в зависимости от того, какая функция административного меню используется для регистрации страницы настроек, например, settings_page
для add_settings_page()
.

Что делать, если я использую add_menu_page() и add_submenu_page() для добавления своих админ-панелей?

"Что делать, если я использую add_menu_page() и add_submenu_page() для добавления своих админ-панелей" - ну, лучшей практикой для первого шага было бы переключиться на add_theme_page()
или add_settings_page()
. (ухмылка). Но, думаю, для add_menu_page()
или add_submenu_page()
вам следует использовать admin_page
вместо appearance_page
.

Я обнаружил, что внизу этих страниц есть отличные примеры, которые помогли мне решить проблему, и у меня всё заработало! Ура! Перейдите по http://codex.wordpress.org/Function_Reference/, затем найдите "wp_enqueue_script" и "wp_enqueue_style".

Кстати, ты сказал, что это лучшая практика, но остаётся ли она таковой? Обрати внимание, я только что обнаружил это: http://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts

Да, я уверен, что лучшей практикой является использование соответствующего подменю, а не меню верхнего уровня, для административных страниц тем/плагинов.

В моём случае у меня как минимум 4 формы для моего плагина, и одна из этих форм — это страница списка для выбора из 50 элементов. Поэтому я выбрал меню верхнего уровня. Кроме того, я считаю, что в WordPress это сбивает с толку, когда ты устанавливаешь плагин с названием "X", а его меню называется "Ссылки", и ты не знаешь этого и начинаешь искать в разделе Настройки, только чтобы запутаться. WordPress должен исправить это в будущем.

Вы знаете, что можно создавать вкладки для страницы настроек, верно? Также: вы можете разместить ссылку на страницу настроек в plugin_meta_row на странице Консоль -> Плагины, чтобы пользователям не приходилось искать вашу страницу настроек. :)

давайте продолжим это обсуждение в чате
