挂钩‘wp_enQueue_脚本’的优先级不起作用

时间:2013-03-22 作者:Markus Schober

在我正在处理的主题中,最多有3个样式表。我正在使用挂钩“wp\\u enqueue\\u scripts”。样式表的顺序对于覆盖样式很重要。我有这样一个代码:

add_action(\'wp_enqueue_scripts\', \'add_stylesheet_one\', 10);
add_action(\'wp_enqueue_scripts\', \'add_stylesheet_two\', 14);
add_action(\'wp_enqueue_scripts\', \'add_stylesheet_three\', 12);
有了这个优先级,样式表顺序应该是“stylesheet\\u one”、“stylesheet\\u three”和“stylesheet\\u two”。但优先级没有任何影响。我试过不同的号码,但顺序没有改变。我错过什么了吗?

Thx寻求帮助!!!

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

问题是你的动作是按照你感知到的顺序运行的,而样式只是由WordPress收集并以随机顺序包含。

add\\u操作的顺序并不重要。我会这样做:

function add_all_stylesheets() {
  // you omitted this from your question, see below
}
add_action(\'wp_enqueue_scripts\', \'add_all_stylesheets\');
现在-如果您希望按顺序包含脚本,则需要让它们相互“依赖”,以便级联。

function add_all_stylesheets() {
  wp_enqueue_style( \'stylesheet-one\', get_template_directory_uri() . \'/css/stylesheet-one.css\' );
  wp_enqueue_style( \'stylesheet-two\', get_template_directory_uri() . \'/css/stylesheet-two.css\', array( \'stylesheet-one\' ) );
  wp_enqueue_style( \'stylesheet-three\', get_template_directory_uri() . \'/css/stylesheet-three.css\', array( \'stylesheet-two\' ) );
}
add_action(\'wp_enqueue_scripts\', \'add_all_stylesheets\');
现在,您的“样式表二”依赖于“样式表一”,而“三”依赖于“二”。这应该是您想要的效果。

SO网友:maheshwaghmare

我知道太晚了。但是,现在,它正如预期的那样工作。

add_action 具有优先级为3\'rd的参数。下面,我将脚本与优先级一起排队10, 12 and 14. 因此,它将脚本与给定优先级的前端进行排队。

下面是我的代码片段,效果很好。

add_action( \'wp_enqueue_scripts\', \'test_enqueue_styles_1\', 10 );
add_action( \'wp_enqueue_scripts\', \'test_enqueue_styles_2\', 14 );
add_action( \'wp_enqueue_scripts\', \'test_enqueue_styles_3\', 12 );

function test_enqueue_styles_1() {
    wp_enqueue_style( \'font-awesome-1-css\', get_template_directory_uri() . \'assets/css/font-awesome.min.css\' );
}

function test_enqueue_styles_2() {
    wp_enqueue_style( \'font-awesome-2-css\', get_template_directory_uri() . \'assets/css/font-awesome.min.css\' );
}

function test_enqueue_styles_3() {
    wp_enqueue_style( \'font-awesome-3-css\', get_template_directory_uri() . \'assets/css/font-awesome.min.css\' );
}
排队序列

test_enqueue_styles_1
test_enqueue_styles_3
test_enqueue_styles_2

SO网友:vancoder

嗯,你这样做有什么原因吗?下面是更传统的方法。

(以下假设样式表位于主题的css目录中。)

function my_enqueue_scripts() {
    wp_enqueue_style( \'stylesheet_one\', get_template_directory_uri() . \'/css/stylesheet_one.css\' );
    wp_enqueue_style( \'stylesheet_three\', get_template_directory_uri() . \'/css/stylesheet_three.css\' );
    wp_enqueue_style( \'stylesheet_two\', get_template_directory_uri() . \'/css/stylesheet_two.css\' );
}

add_action( \'wp_enqueue_scripts\', \'my_enqueue_scripts\' );
也就是说,我不知道为什么你的方法中的优先级不起作用。我们可能需要在附加的函数中查看代码。

结束

相关推荐

我的css、页脚和页眉没有显示!

当我在WordPress上的管理员中激活我的主题时,我的CSS、页眉和页脚都不会显示。我真的不知道问题出在哪里,因为我遵循了教程的所有步骤。header.php<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999