Установка приоритета таблицы стилей дочерней темы
Я создал дочернюю тему, и основной файл style.css работает отлично. Однако в родительской теме есть еще одна таблица стилей, которую я хочу импортировать и создать аналогичную для дочерней темы и использовать вместо неё.
Структура родительской темы - ./woocommerce/woo.css
Структура дочерней темы - ./woocommerce/woo.css (Создан вручную)
Сейчас я подключил обе таблицы стилей в functions.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. Я просто не хочу добавлять его к каждому стилю, который я добавляю.
как это сделать?
Возможно, стоит попробовать добавить значение приоритета для каждого add_action, чтобы гарантировать, что один выполнится раньше другого.
add_action( 'wp_enqueue_scripts', 'fruitful_load_parent_stylesheets', 10 );
add_action('wp_enqueue_scripts', 'fruitful_load_child_stylesheets', 20 );
Не сработало. Вот ссылка на скриншот inspect element - http://i.imgur.com/Mb34NJa.png
Третий блок из woo.css дочерней темы, а первые два — из родительской. Не понимаю, почему они загружаются дважды.
nimsrules
Установка приоритета сработала для меня. Мне пришлось установить его выше 10, чтобы он "переопределил" enqueue родительской темы.
Gavin
Стили вашей дочерней темы (stylesheet) обычно загружаются автоматически. Если этого не происходит, вам также потребуется добавить их в очередь (enqueue). Указав 'parent-style' в качестве зависимости, вы гарантируете, что стили дочерней темы загрузятся после родительских.
/**
* Подключение стилей темы (сначала родительские, затем дочерние)
*
*/
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' );
Примечание: дополнительную информацию можно найти в Руководстве разработчика тем.
Я загружаю дочернюю тему позже, как показано ниже. Мне пришлось убрать стиль родительской темы из очереди и снять его регистрацию, затем снова добавить стиль родительской темы в очередь и добавить стиль дочерней темы. Надеюсь, это поможет.
Родительский functions.php содержит:
add_action('wp_enqueue_scripts', 'load_parent_style', 10);
function load_parent_style() {
wp_enqueue_style('parent-theme-style'); // код родительской темы
}
Дочерний functions.php содержит:
add_action('wp_enqueue_scripts', 'load_child_style', 20);
function load_child_style() {
// регистрируем и добавляем в очередь родительский стиль с новым именем
wp_register_style('parent-style', $url, array($deps));
wp_enqueue_style('parent-style');
// убираем из очереди и снимаем регистрацию стиля родительской темы
wp_dequeue_style('parent-theme-style'); // из родительской темы
wp_deregister_style('parent-theme-style');
// регистрируем и добавляем в очередь стиль дочерней темы
wp_register_style('child-style', get_stylesheet_uri(), array('parent-style'));
wp_enqueue_style('child-style');
}