Правильный способ подключения таблицы стилей для панелей в WordPress

9 апр. 2012 г., 17:36:14
Просмотры: 303
Голосов: 0

Какой правильный способ подключить таблицу стилей для панелей настроек в wp-admin для плагина или темы? То есть — таблицу стилей, которая стилизует сами панели.

В моем шаблоне панели я делаю примерно следующее...

<style type="text/css">
@import url("../wp-content/plugins/myplugin/panels/style.css");
</style>

...но подозреваю, что это может не работать на некоторых установках WordPress из-за различий в путях, а также может перестать работать в будущем, если WordPress решит переименовать папку wp-content во что-то другое.

2
Комментарии

http://codex.wordpress.org/Function_Reference/wp_register_style http://codex.wordpress.org/Function_Reference/wp_enqueue_style также следуйте примерам на этих страницах.

Sisir Sisir
9 апр. 2012 г. 17:59:20

@Sisir, пожалуйста, публикуйте ответы как ответы, а не как комментарии.

Chip Bennett Chip Bennett
9 апр. 2012 г. 18:45:23
Все ответы на вопрос 2
1
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');
9 апр. 2012 г. 17:41:52
Комментарии

Хотя этот метод работает, он будет выводить вашу пользовательскую таблицу стилей на каждой странице админки. В лучшем случае это создаст избыточный код; в худшем — может вызвать проблемы со стилями ядра WordPress и/или других плагинов.

Chip Bennett Chip Bennett
9 апр. 2012 г. 18:28:31
8

Лучшим способом подключения стилей для административной части является использование хука, специфичного для страницы внешнего вида, с применением admin_print_styles-{hook}, где {hook} = {admin_page}-{menu_slug}.

Предполагаю:

  1. Это тема
  2. Вы правильно используете страницу внешнего вида через add_appearance_page()
  3. Ваш $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().

9 апр. 2012 г. 18:27:50
Комментарии

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

Volomike Volomike
13 апр. 2012 г. 21:39:13

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

Chip Bennett Chip Bennett
13 апр. 2012 г. 21:56:33

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

Volomike Volomike
13 апр. 2012 г. 22:06:09

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

Volomike Volomike
13 апр. 2012 г. 22:32:56

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

Volomike Volomike
14 апр. 2012 г. 16:38:20

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

Chip Bennett Chip Bennett
14 апр. 2012 г. 20:28:31

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

Volomike Volomike
14 апр. 2012 г. 20:40:35
Показать остальные 3 комментариев