Как создать дочернюю тему WordPress?

Разберем сначала, для чего же может потребоваться создание дочерней темы?

Основная причина — возможность получать обновления темы в дальнейшем без потери изменений, которые Вы внесли в тему.

Вы поменяли шрифты, расположение логотипа, добавили новых функций в 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