Почему не загружается таблица стилей дочерней темы?

23 янв. 2017 г., 19:13:15
Просмотры: 34.7K
Голосов: 7

Я использую тему 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 файла, и я не знаю, как это исправить.

  1. stage.ottrial.pitt.edu/wp-content/themes/hashone/style.css?ver=4.7.1
  2. stage.ottrial.pitt.edu/wp-content/themes/hashone-theme-child/style.css?ver=1.0
  3. stage.ottrial.pitt.edu/wp-content/themes/hashone/style.css

Тот, который лидирует - это #3. Я не уверен, что я делаю неправильно.

0
Все ответы на вопрос 3
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' );
});
23 янв. 2017 г. 20:00:19
Комментарии

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

Sakena Sakena
23 янв. 2017 г. 22:19:00

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

Nathan Johnson Nathan Johnson
24 янв. 2017 г. 01:27:39

@NathanJohnson ваше решение идентично коду автора вопроса, за исключением анонимной функции. В чем разница?

pcodex pcodex
2 нояб. 2018 г. 03:12:49
2

Вам не нужно загружать таблицу стилей вашей дочерней темы, если только вы не хотите назвать её иначе, чем 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;
}
23 янв. 2017 г. 19:26:55
Комментарии

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

Sakena Sakena
23 янв. 2017 г. 19:40:08

Я обновил свой ответ, добавив пример использования.

Michael Ecklund Michael Ecklund
23 янв. 2017 г. 19:45:55
0

Имейте в виду новую четверку функций, начиная с 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()

В соответствующем порядке. Преимущество заключается в улучшенном соглашении об именовании.

16 февр. 2017 г. 20:26:59