优先选择子主题样式表

时间:2016-02-23 作者:nimsrules

我创建了一个儿童主题和主要风格。css工作得非常好。然而,父主题有另一个样式表,我想导入并为子主题创建相同的样式表,然后使用它。

父主题结构-/woocommerce/woo。css子主题结构-/woocommerce/woo。css(手动创建)

现在,我将两个样式表都放入子主题函数的队列中。php如下所示。

function fruitful_load_parent_stylesheets() {
    wp_enqueue_style( \'layout\', get_template_directory_uri() . \'/woocommerce/woo.css\' );
}
add_action( \'wp_enqueue_scripts\', \'fruitful_load_parent_stylesheets\' );

function fruitful_load_child_stylesheets(){
    wp_enqueue_style( \'woo\', get_stylesheet_directory_uri() . \'/woocommerce/woo.css\');
}
add_action(\'wp_enqueue_scripts\', \'fruitful_load_child_stylesheets\');
现在,如果我为儿童主题的woo添加一种样式。css,直到我!important 信息技术我只是不想在我添加的每种风格上都这么做。

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

您孩子的主题stylesheet 通常会自动加载。如果不是,您需要enqueue 它也是。将“父样式”设置为依赖项将确保子主题stylesheet 之后加载。

/**
 * Enqueue theme styles (parent first, child second)
 * 
 */
function wpse218610_theme_styles() {

    $parent_style = \'parent-style\';

    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/woocommerce/woo.css\' );
    wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . \'/woocommerce/woo.css\', array( $parent_style ) );
}
add_action( \'wp_enqueue_scripts\', \'wpse218610_theme_styles\' );
注意:查看Theme Developer Handbook 了解更多信息。

SO网友:goalsquid

也许您可以尝试为每个add\\u操作添加一个优先级值,以确保一个操作在另一个操作之前执行。

add_action( \'wp_enqueue_scripts\', \'fruitful_load_parent_stylesheets\', 10 );
add_action(\'wp_enqueue_scripts\', \'fruitful_load_child_stylesheets\', 20 );

WordPress Codex add_action()

SO网友:Vemman

我稍后会加载儿童主题,如下所示。我不得不退队&;取消注册父样式,然后将父样式排入队列(&N);子样式。希望这有帮助

父母亲functions.php

add_action(\'wp_enqueue_scripts\', \'load_parent_style\', 10);
function load_parent_style() {
    wp_enqueue_style(\'parent-theme-style\'); // parent theme code
}
儿童functions.php

add_action(\'wp_enqueue_scripts\', \'load_child_style\', 20);
function load_child_style() {
  //register & enqueue parent with new name 
  wp_register_style(\'parent-style\', $url, array($deps));
  wp_enqueue_style(\'parent-style\'); 

  // dequeue & deregister parent\'s theme handle
  wp_dequeue_style(\'parent-theme-style\'); // from parent theme
  wp_deregister_style(\'parent-theme-style\'); 

  // register & enqueue child style
  wp_register_style(\'child-style\', get_stylesheet_uri(), array(\'parent-style\'));
  wp_enqueue_style(\'child-style\');
}