Почему не загружается таблица стилей дочерней темы?
Я использую тему HashOne и создал дочернюю тему для внесения различных изменений в цвета на нашем сайте.
Однако изменения, которые я внес в таблицу стилей дочерней темы, применяются только в определенных разделах сайта, в то время как другие изменения наследуются из родительской темы. Я создал файл functions.php
, который, как мне кажется, правильно отформатирован. Смотрите ниже:
<?php
add_action( 'wp_enqueue_scripts', 'hashone_enqueue_styles' );
function hashone_enqueue_styles() {
wp_enqueue_style( 'hashone-parent-style', get_template_directory_uri() .
'/style.css' );
}
Когда я использовал режим инспектирования, чтобы увидеть, какой CSS переопределяет дочернюю тему, я смог подтвердить, что это определенно родительская тема. Однако одновременно работают три CSS файла, и я не знаю, как это исправить.
stage.ottrial.pitt.edu/wp-content/themes/hashone/style.css?ver=4.7.1
stage.ottrial.pitt.edu/wp-content/themes/hashone-theme-child/style.css?ver=1.0
stage.ottrial.pitt.edu/wp-content/themes/hashone/style.css
Тот, который лидирует - это #3. Я не уверен, что я делаю неправильно.

Нет необходимости добавлять больше кода в файл functions.php, чтобы подключить CSS родительской темы из дочерней темы. Проблема в том, что добавляя этот код, вы подключаете CSS родительской темы второй раз, и теперь он загружается после стилей дочерней темы. Это означает, что все изменения, сделанные в дочерней теме, не будут иметь эффекта.
Просто удалите эту строку, и вы увидите изменения в вашей дочерней теме.
Добавлено: Вот два файла с минимально необходимым кодом для правильного подключения CSS дочерней темы.
Файл style.css:
/*
* Название темы: HashOne Child
* Шаблон: hashone
* Текстовая домен: hashone-chile
*/
Файл functions.php:
<?php
add_action( 'wp_enqueue_scripts', function() {
wp_enqueue_style( 'hashone-parent-style', get_template_directory_uri() . '/style.css' );
});

Можете привести пример того, как должна быть написана строка enqueue в functions.php?

Извините, я был не совсем ясен. То, что у вас выше - правильно. Но тот же файл подключается позже (это второй файл /hashone/style.css, который вы видите). Найдите, где он подключается повторно, и удалите это. На чистой установке HashOne с дочерней темой, состоящей только из пустого style.css и functions.php файла, как у вас выше, стили подключаются корректно в моем случае.

Вам не нужно загружать таблицу стилей вашей дочерней темы, если только вы не хотите назвать её иначе, чем style.css
.
По умолчанию WordPress автоматически загружает style.css
(в корневой директории темы) как родительской, так и дочерней темы.
Убедитесь, что ваша дочерняя тема активирована, и добавьте свои CSS-правила в файл style.css
дочерней темы.
Обязательно используйте инструменты разработчика для удобного определения CSS-правил. Переопределение CSS-правил родительской темы иногда может быть сложным. Использование !important
может помочь переопределить некоторые CSS-правила в родительской теме.
Пример использования !important
в CSS
Допустим, родительская тема определяет такое правило:
#site-title {
color: #000000;
background: #ffffff;
}
Вы можете принудительно переопределить это правило в вашей дочерней теме следующим образом:
#site-title {
color: #ffffff !important;
background: #000000 !important;
}

Спасибо, Майкл. Я перепроверил, что дочерняя тема активирована и что мой CSS добавлен только в дочернюю тему. Где мне нужно прописать "!important" в CSS, чтобы переопределить стили родительской темы?

Имейте в виду новую четверку функций, начиная с WP 4.7:
get_theme_file_uri()
get_parent_theme_file_uri()
get_theme_file_path()
get_parent_theme_file_path()
Они пришли на смену старой четверке:
get_stylesheet_directory_uri()
get_template_directory_uri()
get_stylesheet_directory()
get_template_directory()
В соответствующем порядке. Преимущество заключается в улучшенном соглашении об именовании.
