在插件中将css注入admin_head的最好方法?

时间:2011-02-25 作者:Zack

我正在寻找将CSS注入WordPress管理CP的最佳方法。

目前,我正在使用admin_head 动作钩,在这个钩里,我用dirname( __FILE__ ) 检索样式表的目录。然而dirname() 检索服务器的路径。Is this the recommended way or is there some sort of WordPress function to get a URI path rather than a directory path?

    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();
            }
        }
    }
-扎克

3 个回复
最合适的回答,由SO网友:Rarst 整理而成

看见plugins_url(). 它非常适合链接插件文件夹中的文件。

PS也是wp_enqueue_style() 可能在组合中有意义。

SO网友:filosofo

还有另一种方法可以使用WP的API添加条件注释:

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\' );
`

SO网友:mfields

起初我认为这是不可能的,但后来我做了一些挖掘,并提出了以下在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();
祝你一切顺利-迈克

结束

相关推荐

如何在WordPress中动态添加CSS样式表

当满足某些条件时(例如,post vs.page或类别被标记等),我想加载一个额外的CSS文件。理论上,此文件将更改链接颜色。或者改变背景颜色。外观变化。我的想法是为函数添加代码。然而,我不认为这实际上是在添加CSS页面。即使(即使现在没有条件,也应该总是添加这个新页面)。帮助 /* * register with hook \'wp_print_styles\' */ add_action(\'wp_print_styles\', \'add_my_styleshee