Если вы правили файлы темы напрямую, обновление почти наверняка однажды сотрёт эти изменения. Дочерняя тема решает именно эту проблему: вы оставляете родительскую тему как основу, а все свои правки переносите в отдельную папку, которая не перезаписывается при обновлении.
Ниже — рабочий сценарий: как создать child theme, что именно в неё переносить, а что лучше не трогать, и как проверить, что всё действительно работает после обновления родительской темы.
Что делает дочерняя тема и когда она нужна
Дочерняя тема WordPress наследует шаблоны, стили и функциональность родительской темы. WordPress сначала ищет файлы в дочерней теме, и только если нужного файла там нет, берёт его из родительской. Это удобно, когда нужно:
- поменять стили, разметку или отдельные шаблоны;
- добавить свои функции через
functions.phpдочерней темы; - сохранить изменения при обновлениях родительской темы;
- не редактировать файлы купленной или поддерживаемой темы вручную.
Если вы меняете только цвета, шрифты и отступы, иногда достаточно настроек темы или кастомного CSS. Но если правки затрагивают шаблоны, хуки или PHP-логику, дочерняя тема — нормальный и безопасный путь.
Что подготовить перед началом
Перед созданием дочерней темы сделайте резервную копию сайта и базы данных. Это не формальность: если вы уже вносили правки в родительскую тему, их придётся перенести вручную, а при ошибке в PHP сайт может временно перестать открываться.
Понадобится доступ к файлам сайта по FTP, через файловый менеджер хостинга или по SSH. Для работы с дочерней темой не нужен отдельный плагин, но на практике удобнее сначала создать структуру вручную, а потом уже активировать тему в админке.
Как создать дочернюю тему WordPress
Дочерняя тема — это отдельная папка в wp-content/themes. Минимально ей нужны два файла: style.css и functions.php.
Допустим, родительская тема называется parent-theme. Тогда создайте папку, например parent-theme-child, и добавьте в неё файл style.css с таким заголовком:
/*
Theme Name: Parent Theme Child
Template: parent-theme
Version: 1.0
*/Ключевая строка здесь — Template. Она должна содержать имя папки родительской темы, а не её название в админке. Ошибка в этом поле — самая частая причина, почему WordPress не видит дочернюю тему.
Теперь добавьте functions.php. В нём обычно подключают стили родительской темы и, при необходимости, свои функции:
<?php
add_action( 'wp_enqueue_scripts', 'child_theme_enqueue_styles' );
function child_theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ), wp_get_theme()->get( 'Version' ) );
}Этот вариант подходит для большинства современных тем. Если родительская тема уже подключает стили нестандартно, иногда нужно подстроиться под её схему. Но базовая логика остаётся той же: дочерняя тема не должна ломать загрузку стилей родителя.
Как перенести изменения из родительской темы
Создать child theme — только половина задачи. Вторая половина — аккуратно перенести туда свои правки. И здесь важно понимать, что не все изменения переносятся одинаково.
Стили и мелкая верстка
Если вы меняли CSS в файле родительской темы, перенесите эти правила в style.css дочерней темы или в дополнительный CSS через кастомайзер, если правок немного. Для постоянной поддержки проекта удобнее хранить их именно в дочерней теме: так стили не потеряются при обновлении и их проще контролировать в системе контроля версий.
Если в родительской теме уже есть собственный файл стилей с несколькими подключениями, не копируйте всё подряд. Переносите только свои изменения. Иначе вы получите дублирование кода и усложните дальнейшую поддержку.
Шаблоны страниц и частей темы
Если вы редактировали файлы вроде single.php, page.php, header.php или footer.php, скопируйте нужный файл в дочернюю тему и правьте уже его. WordPress возьмёт версию из child theme вместо родительской.
Но копировать стоит только те шаблоны, которые реально меняете. Если вы перенесёте в дочернюю тему слишком много файлов без необходимости, любое обновление родительской темы станет сложнее: придётся вручную сравнивать, что изменилось у разработчика и что у вас.
Функции и хуки
Если вы добавляли PHP-код в functions.php родительской темы, перенесите его в functions.php дочерней. Это касается добавления меню, регистрации сайдбаров, изменения размеров изображений, подключения скриптов и фильтров WordPress.
Здесь есть важный нюанс: если родительская тема уже содержит функцию с тем же именем, простое копирование кода может вызвать фатальную ошибку из-за повторного объявления. В таких случаях код нужно адаптировать, а не переносить механически. Иногда правильнее не копировать функцию целиком, а использовать доступные хуки и фильтры темы.
Что не стоит переносить в дочернюю тему вручную
Не всё, что лежит в теме, нужно тащить в child theme. Обычно не имеет смысла переносить:
- файлы, которые вы не меняли;
- встроенные библиотеки и сторонние зависимости темы;
- обновляемые служебные файлы, если вы не понимаете, как они связаны с остальной структурой;
- весь родительский
style.cssцеликом без необходимости.
Если вам нужно изменить только один блок шаблона, лучше скопировать только соответствующий файл или использовать хук. Чем меньше файлов вы дублируете, тем проще обновлять тему дальше.
Как активировать и проверить дочернюю тему
После загрузки файлов зайдите в админку WordPress в раздел Внешний вид → Темы и активируйте дочернюю тему. Если WordPress не показывает её в списке, проверьте три вещи: папка лежит в wp-content/themes, в style.css корректно указан Template, а в папке есть хотя бы базовый заголовок темы.
После активации проверьте:
- открывается ли главная страница и внутренние страницы без ошибок;
- подключились ли стили родительской темы;
- видны ли ваши изменения в CSS или шаблонах;
- не сломались ли меню, виджеты и формы, если вы трогали
functions.php.
Если сайт открылся с белым экраном или ошибкой PHP, сначала отключите дочернюю тему, вернув родительскую в админке или переименовав папку child theme по FTP. Затем проверьте код в functions.php и заголовок style.css.
Как не потерять правки при следующих обновлениях
Смысл дочерней темы не в том, чтобы однажды её создать и забыть. Чтобы обновления не ломали сайт, держите в child theme только свои изменения и фиксируйте, что именно вы туда перенесли.
Практически это выглядит так:
- не редактируйте файлы родительской темы после перехода на child theme;
- храните собственные правки только в дочерней теме;
- после обновления родительской темы сравнивайте изменённые шаблоны, если разработчик тоже их поменял;
- не копируйте в дочернюю тему новые файлы родителя без необходимости.
Если обновление родительской темы затронуло шаблон, который вы уже переопределили в child theme, проверьте, не появились ли там новые функции, хуки или исправления безопасности. Иногда достаточно вручную перенести только часть изменений, а не заменять файл целиком.
Когда дочерняя тема не спасает
Есть ситуации, где child theme — не лучший инструмент. Если вы хотите изменить поведение плагина, а не темы, правки нужно делать через хуки плагина или отдельный мини-плагин. Если задача касается глобальной логики сайта, лучше не прятать её в теме, потому что при смене дизайна она потеряется вместе с шаблонами.
То же касается сложных доработок, которые не связаны с внешним видом. Например, если вы добавляете бизнес-логику, интеграции или обработку данных, безопаснее вынести это в плагин, а не держать в теме. Дочерняя тема предназначена именно для наследования и переопределения шаблонов и стилей.
Если коротко: родительская тема остаётся обновляемой базой, а дочерняя — местом для ваших правок. Такой подход избавляет от ручного восстановления изменений после каждого обновления и делает сайт заметно проще в поддержке.