我的子主题中的样式加载在父主题之后,但它破坏了一些东西:如何在父主题之前加载它?

时间:2017-03-08 作者:Thomas

我正在构建我的子主题,但包括我想要使用的物化css,在排队时会破坏整个网站functions.php. 我该如何改变这一点?

function bla_enqueue_child_theme_styles() {

    wp_enqueue_style(\'cookie-font\', \'http://fonts.googleapis.com/css?family=Cookie\');
    //wp_enqueue_style(\'datatables-css\', \'https://cdn.datatables.net/v/dt/dt-1.10.13/datatables.min.css\');
    wp_enqueue_style(\'materialize-css\', \'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css\', 0);
    wp_enqueue_style(\'cake-child-style\', get_stylesheet_directory_uri().\'/style.css\', \'\', 1, \'all\');

    wp_enqueue_script(\'new-jquery\', \'https://code.jquery.com/jquery-3.1.1.min.js\');
    wp_enqueue_script(\'materialize-js\', \'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js\');
    //wp_enqueue_script(\'datatables-js\', \'https://cdn.datatables.net/v/dt/dt-1.10.13/datatables.min.js\');
    wp_enqueue_script(\'custom\', get_stylesheet_directory_uri() . \'/custom.js\');
}

add_action( \'wp_enqueue_scripts\', \'bla_enqueue_child_theme_styles\', -20);

2 个回复
最合适的回答,由SO网友:Willington Vega 整理而成

如何在父主题之前加载它?

我认为你做得对。如果父主题将负责将其样式排入队列的函数附加到wp_enqueue_scripts 钩子,然后你的bla_enqueue_child_theme_styles() 必须首先执行函数(因为您通过了-20 并且您的样式应该首先包含在页面的源代码中。

Materialize的CSS规则覆盖父主题的事实可能与包含样式表的顺序无关,但与这些样式表中使用的选择器的特殊性有关。

Cake也可能使用某种CSS框架,无论是由第三方开发的还是自定义的。在这种情况下,很可能Cake和Materialize都试图解决相同的问题,但使用不同的方法,在过程中产生冲突。

SO网友:tillinberlin

你可以先dequeue 父样式表,然后enqueue 子样式表enqueue 父样式表。

Dequeueing 父样式表应该是这样工作的:

function PREFIX_remove_scripts() {

    wp_dequeue_style( \'screen\' );
    wp_deregister_style( \'screen\' );

    wp_dequeue_script( \'site\' ); // optional 
    wp_deregister_script( \'site\' ); // optional

    // Now register your styles and scripts here 

}

add_action( \'wp_enqueue_scripts\', \'PREFIX_remove_scripts\', 20 );
…如对该问题的回答所述:“How do I dequeue a parent theme\'s CSS file?“”

相关推荐