Дочерняя тема не загружает CSS родительской темы

7 сент. 2015 г., 01:26:25
Просмотры: 14.7K
Голосов: 3

Я использую тему 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 из родительской темы, но это не помогло.
Может, я что-то упускаю?

0
Все ответы на вопрос 3
1
11

Ознакомьтесь с Как создать дочернюю тему, и вы увидите, что:

предыдущий метод подключения таблицы стилей родительской темы заключался в использовании @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' );
}
7 сент. 2015 г. 02:02:47
Комментарии

Спасибо за ответ, но всё ещё безрезультатно

Toby Cannon Toby Cannon
7 сент. 2015 г. 09:29:22
0

Тема 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
    );
}
7 сент. 2015 г. 11:59:27
0

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
    );
}
18 дек. 2020 г. 06:42:58