zack
  • 0
Мастер

Как лучше внедрить css в admin_head в плагинах?

  • 0

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

В настоящее время я использую 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();
            }
        }
    }

-Зак

Share
  1. См plugins_url() .. Он идеально подходит для ссылок на файлы в папках плагинов.

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

    • 0
  2. Есть еще один способ добавить условные комментарии, используя 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' );
    

    `

    • 0
  3. Сначала я не думал, что это возможно, но потом немного покопался и нашел следующее решение, которое работает для меня на 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();
    

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

    • 0

Оставить ответ

You must login to add an answer.