Включение CSS и JS на администраторском экране пользовательских опций темы

Я создаю пользовательскую тему со страницей параметров темы.

Я хотел бы разработать страницу параметров и не хочу включать встроенные стили. Есть ли любой способ включать внешнюю таблицу стилей от, говорят

TEMPLATEPATH . '/css/admin.css'

Я также нашел этот блок кода, и это, кажется, работает - ссылка

function admin_register_head() {
 $siteurl = get_option('siteurl');
 $url = $siteurl . '/wp-content/plugins/' . basename(dirname(__FILE__)) . '/yourstyle.css';
 echo "<link rel='stylesheet' type='text/css' href='$url' />\n";
}
add_action('admin_head', 'admin_register_head');

Каков лучший способ?

4
22.09.2010, 05:15
4 ответа

При создании администраторского плагина темы из шагов Кодекса Вы заметите, что он говорит для не вставки таблиц стилей согласно вышеупомянутому - хотя вышеупомянутое будет работать.

При размещении следующей внутренней части администраторский файл темы она будет служить той же цели, но использует подход wp_enqueue_styles:

function add_admin_theme_styles() {
    wp_register_style($handle = 'mytheme-theme-admin-styles', $src = plugins_url('wp-admin.css', __FILE__), $deps = array(), $ver = '1.0.0', $media = 'all');
    wp_enqueue_style('mytheme-theme-admin-styles');}
    add_action('admin_print_styles', 'add_admin_theme_styles');
3
19.02.2020, 22:09

При регистрации страницы для администраторской области, с помощью add_submenu_page или любой из другого add_{TYPE}_page функционирует четвертый параметр принимает уникальный идентификатор, этот идентификатор определяет рычаг, который будет использовать Ваша зарегистрированная страница..

Если я должен был зарегистрировать опции, например:

add_options_page( 'Example Plugin Options', 'Example Plugin', 'manage_options', 'example-plugin-identifier', 'example_plugin_options' );

Различные рычаги затем доступны для той страницы а именно, вот всего несколько возможных действий для теперь зарегистрированной страницы.

// load-{HANDLE}
add_action( 'load-example-plugin-identifier', 'example_plugin_callback' );
// admin_head-{HANDLE}
add_action( 'admin_head-example-plugin-identifier', 'example_plugin_callback' );
// admin_print_scripts-{HANDLE}
add_action( 'admin_print_scripts-example-plugin-identifier', 'example_plugin_callback' );
// admin_print_styles-{HANDLE}
add_action( 'admin_print_styles-example-plugin-identifier', 'example_plugin_callback' );

function example_plugin_callback() {

    // Run your code here

}

Существует также admin_enqueue_scripts рычаг, который обеспечивает название текущего дескриптора в строке/переменной, которую это передает функциям обратного вызова.

add_action( 'admin_enqueue_scripts', 'example_plugin_callback' );

function example_plugin_callback( $handle ) {

    // If the handle is not the page registered earlier, return
    if( 'example-plugin-identifier' =! $handle )
        return;

    // Run your code here

}

Вы не должны обычно должны быть использовать admin_head,admin_print_scripts или admin_print_styles если у Вас нет конкретного требования, чтобы предназначаться для каждой страницы администрирования или выполнить условную логику в обратном вызове для предназначения для определенных зарегистрированных страниц.

Надежда, которая помогает..

4
19.02.2020, 22:09
  • 1
    хорошо, это имеет смысл. Могут Вы для обновления страницы Codex о создании администраторской темы с этим? codex.wordpress.org/Creating_Admin_Themes –  davemac 10.11.2010, 02:27
  • 2
    я, конечно, мог, но я должен буду сесть и создать администраторскую тему, прежде чем я пойду, говоря другим, как они должны делать его, время, разрешая, чтобы я видел, могу ли я пересмотреть ту запись кодекса.. –  t31os 10.11.2010, 12:59
  • 3
    Здорово! @abrudtkuhl, необходимо, вероятно, выбрать этот комментарий как корректный ответ, а не мой я думал бы. –  davemac 11.11.2010, 03:50

WP предоставляет очередям для сценариев и стилей. Это позволяет присваивать версию URL, автоматически загружать зависимости, и т.д.

Посмотрите wp enqueue style() в Кодексе для того, как правильно зарегистрировать Ваш стиль и загрузку только там, где Вам нужен он (на уровне Вашей пользовательской страницы и не всей администраторской области).

3
19.02.2020, 22:09

Да я отвечаю на свой собственный вопрос..., но я действительно заставлял его работать.

Добавьте это действие к functions.php файлу своей темы

function admin_register_head() {
    $url = get_bloginfo('template_directory') . '/css/admin.css';
    echo "<link rel='stylesheet' type='text/css' href='$url' />\n";
}
add_action('admin_head', 'admin_register_head');
1
19.02.2020, 22:09
  • 1
    Если это решение работает на Вас, необходимо нажать галочку "Accept", таким образом, другие знают, что Вы больше не ищете его. Но также и проверьте другие ответы, они предлагают серьезные основания, почему Вы не должны писать <link> теги самостоятельно. –  Jan Fabry 09.11.2010, 16:37

Теги

Похожие вопросы