Разберем сначала, для чего же может потребоваться создание дочерней темы?
Основная причина — возможность получать обновления темы в дальнейшем без потери изменений, которые Вы внесли в тему.
Вы поменяли шрифты, расположение логотипа, добавили новых функций в functions.php, заменили вывод постов и т.д. Что же произойдет со всеми этими доработками темы после её обновления? Правильно — они просто исчезнут, будут заменены новыми файлами темы.
Мы поддерживаем автоматическое обновление своих тем, поэтому всегда настоятельно рекомендуем — НЕ ВНОСИТЬ изменения в код непосредственно самой темы. Иначе Вы либо не сможете обновиться, либо потеряете все свои доработки.
Как вносить правки и не бояться их потерять при обновлении?
Ответ есть в заголовке статьи — необходимо создать дочернюю тему. Пусть Вас это не пугает, это дело 5 минут и не требует специальных знаний.
Допустим наша тема называется yelly
. Мы создадим дочернюю тему, которую назовем yelly_child
.
1. Переходим в директорию /wp-content/themes/
2. Создаем новую папку, которую назовем yelly_child
3. Теперь в созданную папку yelly_child
мы должны поместить файл style.css
Либо создайте его, либо возьмите из архива с примером в конце этой статьи.
Внутри файла style.css
необходимо разместить следующий код:
/**
* Theme Name: My Child Theme
* Template: yelly
*/
Этот файл style.css
как раз и будет говорить WordPress, что yelly_child
это дочерняя тема от yelly
.
Theme name
здесь обозначает название темы, а Template
указывает на родительскую тему.
4. Активируйте Вашу дочернюю тему и посмотрите на сайт. Если он выглядит «сломанным», без оформления и стилей — тогда необходимо их подключить. Если все стили выглядят хорошо — пропустите этот пункт. Для этого в папке с нашей дочерней темой создаем файл functions.php
и прописываем в него следующее:
<?php
add_action( 'wp_enqueue_scripts', 'my_child_theme_scripts' );
function my_child_theme_scripts() {
wp_enqueue_style( 'parent-theme-css', get_template_directory_uri() . '/style.css' );
}
Таким образом в нашей дочерней теме должно быть 2 файла: style.css и functions.php.
Как удалить фильтры родительской темы
Поскольку сперва загружается functions.php дочерней темы, а потом родительской — это вызывает ряд вопросов, как же удалить фильтры из родительской темы
function childtheme_remove_filters(){
remove_filter( 'comment_form_field_comment', 'comment_form_field_comment_add_smile' );
}
add_action( 'after_setup_theme', 'childtheme_remove_filters' );
Скачать дочернюю тему Yelly Child