Установка приоритета таблицы стилей дочерней темы
Я создал дочернюю тему, и основной файл 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 дочерней темы, а первые два — из родительской. Не понимаю, почему они загружаются дважды.

Установка приоритета сработала для меня. Мне пришлось установить его выше 10, чтобы он "переопределил" enqueue родительской темы.

Стили вашей дочерней темы (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');
}
