Дочерняя тема не загружает CSS родительской темы
Я использую тему MyStile для нового сайта. Пытаюсь создать дочернюю тему, чтобы вносить изменения без риска их перезаписи, но после активации дочерней темы все стили сайта пропадают.
Предполагаю, что проблема связана с загрузкой родительского файла style.css.
Вот что у меня находится в style.css дочерней темы:
/*
Название темы: Blurred Edge Apparel
URI темы: http://www.blurrededgeapparel.com
Описание: Дочерняя тема MyStile
Автор: Blurred Edge Apparel
URI автора: http://www.blurrededgeapparel.com
Шаблон: mystile
Версия: 1.0.0
*/
@import url("../mystile/style.css");
Я также скопировал файлы header.php и footer.php из родительской темы, но это не помогло.
Может, я что-то упускаю?

Ознакомьтесь с Как создать дочернюю тему, и вы увидите, что:
предыдущий метод подключения таблицы стилей родительской темы заключался в использовании @import: это больше не считается лучшей практикой. Правильный способ подключения таблицы стилей родительской темы — добавить действие wp_enqueue_scripts и использовать wp_enqueue_style() в файле functions.php вашей дочерней темы.
Вот предоставленный пример:
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}

Тема Mystile — это трехлетняя тема, которая не готова к использованию в качестве родительской (parent-style), потому что дочерний стиль (child-style) жестко прописан в header.php в неправильном месте.
Быстрый способ исправить это — поместить следующие файлы в директорию дочерней темы:
- Файл style.css:
.
/*
Template: mystile
*/
- Файл child-style.css: все CSS-правила, которые вы хотите применить
- Файл 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' );
wp_enqueue_style( 'child-style'
, get_stylesheet_directory_uri() . '/child-style.css'
, array('parent-style') // Указываем зависимость,
// чтобы child-style загружался после parent-style
);
}

https://developer.wordpress.org/themes/advanced-topics/child-themes/
Рекомендуемый способ подключения таблиц стилей — добавить действие wp_enqueue_scripts и использовать wp_enqueue_style() в файле functions.php вашей дочерней темы. Если у вас его нет, создайте functions.php в директории дочерней темы. Первой строкой в functions.php дочерней темы должен быть открывающий тег PHP (<?php), после которого можно писать PHP-код в соответствии с тем, что делает родительская тема.
Если родительская тема загружает обе таблицы стилей, дочерней теме не нужно ничего делать.
Если родительская тема загружает свои стили с помощью функции, начинающейся с get_template, например get_template_directory() и get_template_directory_uri(), дочерняя тема должна загружать только дочерние стили, используя handle родительской темы в параметре зависимости.
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
wp_enqueue_style( 'child-style', get_stylesheet_uri(),
array( 'parenthandle' ),
wp_get_theme()->get('Version') // это работает только если у вас указана Version в заголовке style
);
}
Если родительская тема загружает свои стили с помощью функции, начинающейся с get_stylesheet, например get_stylesheet_directory() и get_stylesheet_directory_uri(), дочерняя тема должна загружать как родительские, так и дочерние стили. Убедитесь, что используете то же имя handle, что и родительская тема для родительских стилей.
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
$parenthandle = 'parent-style'; // Например, 'twentyfifteen-style' для темы Twenty Fifteen.
$theme = wp_get_theme();
wp_enqueue_style( $parenthandle, get_template_directory_uri() . '/style.css',
array(), // если в родительской теме есть зависимости, скопируйте их сюда
$theme->parent()->get('Version')
);
wp_enqueue_style( 'child-style', get_stylesheet_uri(),
array( $parenthandle ),
$theme->get('Version') // это работает только если у вас указана Version в заголовке style
);
}
Обратите внимание на выделенный жирным текст выше. Теперь проверьте, как ваша родительская тема загружает свои стили, и следуйте инструкциям и примерам соответственно. В моем случае был второй вариант, поэтому я написал свой код следующим образом:
add_action( 'wp_enqueue_scripts', 'twentytwentychild_enqueue_styles' );
function twentytwentychild_enqueue_styles() {
$parentHandle = "twentytwenty-style";
$childHandle = "twentytwentychild-style";
$theme = wp_get_theme();
wp_enqueue_style($parentHandle, get_template_directory_uri() . '/style.css',
array(), // если в родительской теме есть зависимости, скопируйте их сюда
$theme->parent()->get('Version') // это работает только если у вас указана Version в заголовке style
);
wp_enqueue_style($childHandle, get_stylesheet_uri(),
array($parentHandle),
$theme->get('Version') // это работает только если у вас указана Version в заголовке style
);
}
