具有多个样式表的插件的WP_ENQUEUE_STYLE

时间:2014-03-03 作者:Uzair Hayat

我正在制作一个导航插件,为你的wordpress导航添加动画。

我在Wordpress Codex中读到我需要使用wp\\u enqueue\\u style()。

首先,如何将此代码用于多个css文件?在我的主插件文件中。

现在根据this 问题,我会添加如下样式表:

function add_my_stylesheet() 
{
    wp_enqueue_style( \'myCSS\', plugins_url( \'/css/myCSS.css\', __FILE__ ) );
}

add_action(\'admin_print_styles\', \'add_my_stylesheet\');
由于我的插件需要添加多个样式表,我应该使用这两个代码中的哪一个?

function add_my_stylesheet() 
{
    wp_enqueue_style( \'myCSS\', plugins_url( \'/css/myCSS.css\', __FILE__ ) );
}

add_action(\'admin_print_styles\', \'add_my_stylesheet\');

function add_my_stylesheet1() 
{
    wp_enqueue_style( \'myCSS1\', plugins_url( \'/css/myCSS1.css\', __FILE__ ) );
}

add_action(\'admin_print_styles\', \'add_my_stylesheet1\');

function add_my_stylesheet1() 
{
    wp_enqueue_style( \'myCSS1\', plugins_url( \'/css/myCSS.css\', __FILE__ ) );
    wp_enqueue_style( \'myCSS1\', plugins_url( \'/css/myCSS1.css\', __FILE__ ) );
}

add_action(\'admin_print_styles\', \'add_my_stylesheet1\');
现在我知道在哪里添加此代码。但是如何调用我想要使用的样式表呢?

另外,为了明确我的插件会做什么:主插件文件只会加载所需的样式表。选项页面允许用户选择所需的样式表。

例如,在php格式中,我将使用以下内容:

<link href="nav-<?php echo $name; ?>.css">
$名称应该是从选项页中选择的名称,但是如何调用所需的样式表呢?

我希望我的问题足够清楚。

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

要回答第一个问题,可以使用第二种方式,即。

function add_my_stylesheet() 
{
    wp_enqueue_style( \'myCSS\', plugins_url( \'/css/myCSS.css\', __FILE__ ) );
    wp_enqueue_style( \'myCSS1\', plugins_url( \'/css/myCSS1.css\', __FILE__ ) );
}

add_action(\'admin_print_styles\', \'add_my_stylesheet\');
什么add_action() function 告诉WordPress“什么时候the admin_print_styles action 发生,运行此add_my_stylesheet() 作用“令人困惑的是,the practice of using the admin_print_styles and admin_enqueue_styles actions to enqueue stylesheets is incorrect - 尽管有违直觉,但您应该使用admin_enqueue_scripts 相反

呼叫wp_enqueue_style() 然后将指定的样式表添加到将要加载的样式表列表中(如果您指定了dependencies参数,那么WordPress还将负责确保您的样式表以正确的顺序加载)。您不需要像建议的那样“调用”已排队的样式表-如果已排队,则will 以HTML格式打印出来<link ...> 中的元素<head></head> 节的方式与WordPress加载自己的样式表的方式相同。

为了选择要加载的样式表,只需将逻辑添加到add_my_stylesheet() 作用如果不希望使用样式表,则不将其排队,即:

function admincolorplugin_enqueue_styles() 
{
    // Get the user\'s stylesheet choice from the options, default to "white"
    $stylesheet = get_option( \'admincolorplugin_stylesheet\', \'white\' );

    // Conditionally load the appropriate stylesheet
    if( $stylesheet == \'black\' ) {
        wp_enqueue_style( \'admincolorplugin-black\', plugins_url( \'/css/black.css\', __FILE__ ) );
    }
    else {
        wp_enqueue_style( \'admincolorplugin-white\', plugins_url( \'/css/white.css\', __FILE__ ) );
    }
}

add_action(\'admin_enqueue_scripts\', \'admincolorplugin_enqueue_styles\' );

SO网友:ScottMcGready

例如,使用if检查它是否符合您的标准

特定页面/帖子(id)与管理选项相关的所有页面/帖子这样,当选中所需的管理选项时,它只会在所需页面/上拉取所需的CSS。

    function add_my_stylesheet1() 
    {
        if(is_page(41)){
            wp_enqueue_style( \'myCSS1\', plugins_url( \'/css/myCSS.css\', __FILE__ ) );
        }else{
            wp_enqueue_style( \'myCSS1\', plugins_url( \'/css/myCSS1.css\', __FILE__ ) );
        }
    }
或:

    function add_my_stylesheet1() 
    {
        $adminopt = get_option( $option, $default );
        if($adminopt == "Normal CSS"){
            wp_enqueue_style( \'myCSS\', plugins_url( \'/css/myCSS.css\', __FILE__ ) );
        }else{
            wp_enqueue_style( \'myCSS1\', plugins_url( \'/css/myCSS1.css\', __FILE__ ) );
        }
    }

SO网友:vishakha
add_action( \'admin_enqueue_scripts\', \'safely_add_stylesheet_to_admin\' );

/** * Add stylesheet to the page*/
function safely_add_stylesheet_to_admin() {
    wp_enqueue_style( \'prefix-style\', plugins_url(\'plugin_styles.css\', __FILE__) );
    wp_enqueue_style( \'prefix-basic\', plugins_url(\'/css/basic.css\', __FILE__) );

}
结束

相关推荐