Я изменил свой сайт WordPress, чтобы использовать дочерние темы, но стиль родительской темы имеет приоритет над любыми изменениями, которые я делаю в CSS дочерней темы. Я могу обойти это, используя !important
, однако, это нестабильное решение, и дочерние темы должны работать как первый ресурс сайта.
Например, на моем сайте граница, которая включает в себя .wp-caption
тот же цвет, что и фон, использующий !important
тег, но без него работать не будет.
Связано ли это с файлом functions.php?
Это содержимое моего файла PHP:
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
css
child-theme
Dharkov
источник
источник
Ответы:
Попробуйте поставить в очередь CSS вашей дочерней темы следующим образом:
Обратите внимание на несколько вещей:
1) PHP_INT_MAX в качестве приоритета, чтобы он выполнялся последним
2) get_stylesheet_directory_uri () против get_template_directory_uri (), который будет указывать на папку шаблонов дочерней темы вместо родителей.
Я также добавил туда подпапку,
/styles/
потому что я обычно держу свой CSS в подпапке моей темы.3) затем следует,
array( 'parent-style' )
чтобы дочерний CSS имел родительский CSS в качестве зависимости, в результате чего родительская тема сначала помещается в заголовок, а дочерняя тема - CSS. Из-за этого все, что также появляется в дочерней теме, которая уже находится в родительской теме, перезапишет версию родительской темы.источник
body, select { color: red !important; font-size:200% !important; }
Ответ TLDR: первый параметр каждого
wp_enqueue_style()
не должен быть оставлен как «родительский стиль» и «дочерний стиль». Они должны быть переименованы, чтобы соответствовать названию родительской темы и ее дочернему элементу.проблема
Если вы не переименуете параметры, вы получите дочернюю тему, помещенную в очередь во второй раз, что может привести к тому, что правила дважды появятся в Firebug, и изменение значений в неправильной не окажет никакого видимого эффекта, что может заставить вас думать, что ваши дочерние правила не переопределить родителя.
Ожидание
На странице Кодекса о дочерних темах правильно сказано, что если вы ничего не делаете, дочерний CSS-код автоматически связывается. Да, но только это. Рабочий процесс CSS немного отличается: вы хотите переопределить, а не заменить. Это логично (работает как другие файлы темы), но они могли иметь примечание.
Решение
Переименуйте параметры. Я делаю это, как показано ниже, чтобы получить (немного) больше контроля, обратите внимание, что вы должны заменить twentysixteen и twentysixteen-child именами вашей темы и дочерней темы:
(Также обратите внимание, что вы не получаете контроль над порядком ссылок некоторых (всех?) Плагинов WP в этом действии. Они становятся связанными после.)
Удачного селектора-охоты;)
источник
Вы можете использовать более конкретный селектор в CSS вашей дочерней темы, чтобы он имел приоритет.
Так что вместо:
Использование:
Вы также должны быть уверены, что поставьте в очередь таблицу стилей вашей дочерней темы в вашем файле functions.php, если вы еще этого не сделали.
http://codex.wordpress.org/Function_Reference/wp_enqueue_style
источник