Лучший способ ввести CSS в admin_head в плагинах?

Я ищу лучший способ ввести CSS в Администратора WordPress CP.

В настоящее время я использую admin_head рычаг действия и в этом рычаге, я использую dirname( __FILE__ ) получать каталог для таблиц стилей. Однако dirname() действительно получает путь сервера. Действительно ли это - рекомендуемый путь, или там своего рода функция WordPress должна получить путь URI, а не путь к каталогу?

    public function admin_head()
    {
        // Let's include the Control Panel CSS
        $url = dirname( __FILE__ ) . '/css/cpanel.css';
        $ie = dirname( __FILE__ ) . '/css/cpanel-ie.css';

        // Inject our cPanel styelsheet and add a conditionaly for Internet Explorer
        //      (fixes bugs on my home browser)
        $head = <<<HEAD
    <link rel="stylesheet" href="{$url}" type="text/css" media="screen" />
    <!--[if IE]>
        <link rel="stylesheet" type="text/css" href="{$ie}" media="screen" />
    <![endif]-->
HEAD;

        echo $head; 

        foreach( self::$classes as $class => $obj )
        {
            if ( method_exists( $obj, 'admin_head' ) )
            {
                $obj->admin_head();
            }
        }
    }

- Zack

1
25.02.2011, 22:25
3 ответа

Посмотрите plugins_url(). Это прекрасно и спроектировано для соединения с файлами в сменных папках.

PS также wp_enqueue_style() мог бы иметь смысл в соединении.

2
19.02.2020, 22:41
  • 1
    Хм. wp_enqueue_style: это может использоваться для введения CSS, основанной на браузере? Или был бы общее представление я иметь (только с plugins_url) лучший способ должным быть сделать это? –  Zack 25.02.2011, 23:15
  • 2
    @Zack, который я неопределенно помню, существует $is_IE глобальный var, никогда не использовал это самостоятельно. Посмотрите vars.php. –  Rarst 25.02.2011, 23:21

Существует другой способ добавить условные комментарии, с помощью API WP:

wp_enqueue_style(
    'my-ie-style',
     get_template_directory_uri() . '/css/cpanel-ie.css'
);

global $wp_styles;
$wp_styles->add_data( 'my-ie-style', 'conditional', 'IE' );

`

6
19.02.2020, 22:41
  • 1
    Ничего себе! Никогда не знал это. Для тех, кто заинтересовал вот, блок кода, который обрабатывает это в источнике. –  Rarst 25.02.2011, 23:45
  • 2
    +1. Яркий пример вида скрытых API-функций, которые заставляют меня продолжать любить WordPress! –  goldenapples 26.02.2011, 00:17
  • 3
    , я привлечен к этому отрывку. Мне действительно нравится он. Я изучу его далее после того, как я протестирую ответ @mfields. –  Zack 26.02.2011, 00:19
  • 4
    Это определенно аккуратно! Действительно не имели никакой потребности вырыть в класс Зависимостей прежде. @filosofo, В то время как я соглашаюсь, что это, кажется, более прямой подход, я стараюсь не касаться глобальных объектов как можно больше в расширениях и использую рычаги по мере возможности. –  mfields 26.02.2011, 00:40

Я первоначально не думал, что это было возможно, но затем я сделал некоторое рытье и предложил следующее решение, которое работает на меня на WordPress 3.1. Хитрая часть получала условные теги для IE там. Существует фильтр для него!

<?php
/*
Plugin Name: My Plugin
*/
class My_Plugin {
    function My_Plugin() {
        add_action( 'wp_print_styles', array( &$this, 'css_public' ) );
        add_filter( 'style_loader_tag', array( &$this, 'ie_conditional_comments' ), 10, 2 );
    }
    function css_public() {
        wp_enqueue_style( 'my-plugin', plugins_url( '/my.css', __FILE__ ), array(), '1.0' );
        wp_enqueue_style( 'my-plugin-ie', plugins_url( '/my-ie.css', __FILE__ ), array( 'my-plugin' ), '1.0' );
    }
    function ie_conditional_comments( $tag, $handle ) {
        if ( 'my-plugin-ie' == $handle ) {
            $tag = '<!--[if IE]>' . $tag . '<![endif]-->';
        }
        return $tag;
    }
}
$my_plugin = new My_Plugin();

С наилучшими пожеланиями, - Майк

3
19.02.2020, 22:41
  • 1
    Хороший отрывок! Но для администратора это, вероятно, было бы легче к (не) очередь в зависимости от глобального var для IE, так как нет никакого статического сценария кэширования для волнения о. –  Rarst 25.02.2011, 23:37
  • 2
    Это похоже на что-то, в чем я нуждаюсь, я играю с ним прямо сейчас и возвращусь для маркировки ответа как 'Ответ' ;) –  Zack 26.02.2011, 00:18

Теги

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