Как создать дочернюю тему WordPress без потери изменений
Пошаговая инструкция по созданию дочерней темы WordPress: style.css, Template, functions.php, подключение стилей и проверка перед активацией.
Короткий ответ: дочерняя тема WordPress нужна, когда вы хотите менять файлы темы, стили или PHP-логику и при этом не потерять правки после обновления родительской темы. Минимальный набор файлов — папка в wp-content/themes, файл style.css с заголовком темы и, при необходимости, functions.php для подключения стилей и добавления своей логики.
Ниже разберем безопасный ручной способ: как создать дочернюю тему, правильно указать родителя, подключить CSS, проверить результат и не сломать сайт при активации. Пример подходит для классических тем и для большинства задач доработки WordPress без правки ядра, родительской темы и сторонних плагинов.

Когда действительно нужна дочерняя тема
Дочерняя тема нужна не для каждой мелкой настройки. Если вы меняете только пару цветов через «Внешний вид → Настроить» или через настройки конструктора, отдельная тема может быть лишней. Но если правки попадают в файлы шаблонов, functions.php, CSS или JavaScript, дочерняя тема становится нормальным рабочим слоем.
Используйте дочернюю тему, если нужно:
- переопределить файл шаблона записи, страницы, архива или части шаблона;
- добавить собственные функции через хуки и фильтры WordPress;
- подключить проектные CSS и JavaScript без редактирования родителя;
- сохранить изменения при обновлении коммерческой или бесплатной темы;
- быстро отключить кастомизацию, вернув активной родительскую тему.
Если задача относится к бизнес-логике сайта и должна работать при смене дизайна, лучше вынести ее в небольшой кастомный плагин. Например, обработчики форм, интеграции, SEO-доработки и постоянные шорткоды обычно надежнее держать вне темы. WordPress в официальной документации прямо разделяет роль functions.php темы и плагинов: файл функций относится к активной теме, а плагин не зависит от выбранного оформления.
Что подготовить перед созданием
Перед любыми правками сделайте резервную копию файлов и базы данных. Минимум — экспорт базы и копия папки активной темы. На рабочем сайте лучше сначала повторить действия на локальной копии или staging-окружении, а уже потом переносить результат на продакшен.
Также узнайте точное имя папки родительской темы. Оно понадобится в поле Template. Название темы в админке и имя папки могут отличаться, поэтому ориентируйтесь именно на каталог в wp-content/themes. Например, у активной темы может быть красивое имя «Rife Free», а папка будет называться rife-free.
Шаг 1. Создайте папку дочерней темы
Перейдите в каталог:
wp-content/themes/
Создайте в нем новую папку. Обычно имя делают из имени родительской темы с суффиксом -child:
wp-content/themes/rife-free-child/
Используйте только латиницу, цифры и дефисы. Это уменьшает риск проблем при переносе сайта между хостингами и системами контроля версий.
Шаг 2. Добавьте style.css с заголовком темы
В папке дочерней темы создайте файл style.css. В начало файла добавьте служебный комментарий:
/*
Theme Name: Rife Free Child
Theme URI: https://example.com/
Description: Дочерняя тема для безопасных доработок Rife Free.
Author: Site Owner
Template: rife-free
Version: 1.0.0
Text Domain: rife-free-child
*/
Критичное поле здесь — Template. Оно должно точно совпадать с именем папки родительской темы. Если написать Rife Free вместо rife-free, WordPress не сможет связать дочернюю тему с родителем.
После заголовка можно добавлять свои CSS-правила. Но сам факт наличия style.css еще не всегда означает, что файл загрузится на сайте. Для классических тем это зависит от того, как родитель подключает стили.
Шаг 3. Подключите стили через functions.php
Создайте в той же папке файл functions.php. Не копируйте в него весь functions.php родительской темы: это частая причина фатальных ошибок из-за повторного объявления функций. Добавляйте только свои функции.
Базовый вариант для загрузки CSS дочерней темы:
<?php
/**
* Подключает стили дочерней темы.
*/
function ink_child_theme_enqueue_styles() {
$style_path = get_stylesheet_directory() . '/style.css';
$version = file_exists( $style_path )
? (string) filemtime( $style_path )
: wp_get_theme()->get( 'Version' );
wp_enqueue_style(
'ink-child-theme',
get_stylesheet_uri(),
array(),
$version
);
}
add_action( 'wp_enqueue_scripts', 'ink_child_theme_enqueue_styles' );
Если родительская тема сама загружает только свой style.css, этого достаточно для ваших дополнительных стилей. Если после активации пропали стили родителя, нужно явно подключить родительский файл перед дочерним:
<?php
/**
* Подключает стили родительской и дочерней темы.
*/
function ink_child_theme_enqueue_styles() {
$parent_style_path = get_template_directory() . '/style.css';
$child_style_path = get_stylesheet_directory() . '/style.css';
wp_enqueue_style(
'ink-parent-theme',
get_template_directory_uri() . '/style.css',
array(),
file_exists( $parent_style_path ) ? (string) filemtime( $parent_style_path ) : null
);
wp_enqueue_style(
'ink-child-theme',
get_stylesheet_uri(),
array( 'ink-parent-theme' ),
file_exists( $child_style_path ) ? (string) filemtime( $child_style_path ) : wp_get_theme()->get( 'Version' )
);
}
add_action( 'wp_enqueue_scripts', 'ink_child_theme_enqueue_styles' );
На современных block themes логика может отличаться: часть оформления хранится в theme.json, а родитель может вообще не использовать обычный style.css. Поэтому после создания дочерней темы проверяйте реальную очередь стилей в исходном коде страницы и во вкладке Network.
Шаг 4. Активируйте тему без потери настроек
Откройте «Внешний вид → Темы» и активируйте дочернюю тему. Если WordPress сообщает, что родительская тема отсутствует, проверьте поле Template и имя папки родителя. Ошибка почти всегда в регистре, пробелах или неправильном slug.
После активации пройдите базовую проверку:
- Откройте главную страницу, запись блога, страницу услуги и архив рубрики.
- Проверьте, что меню, виджеты и настройки темы не пропали.
- Откройте исходный код страницы и найдите файл дочерней темы.
- Проверьте консоль браузера на JavaScript-ошибки.
- Очистите кеш плагина оптимизации, если сайт использует минификацию.
Иногда после смены темы WordPress может попросить заново назначить меню или область виджетов. Поэтому активацию лучше делать не в час пик и только после бэкапа.
Как переопределять шаблоны
Чтобы изменить файл шаблона, скопируйте его из родительской темы в дочернюю с тем же относительным путем. Например:
rife-free/single.php
rife-free-child/single.php
WordPress будет использовать файл из дочерней темы, а если его там нет — файл из родителя. Это удобно, но у метода есть важное ограничение: скопированный шаблон перестает автоматически получать правки из новых версий родительской темы. После обновлений родителя сравнивайте измененные шаблоны и переносите нужные исправления вручную.
Не копируйте шаблон «про запас». Чем меньше переопределенных файлов, тем проще сопровождать сайт. Если задачу можно решить хуком или фильтром, сначала используйте хук.
Как добавлять свой PHP-код
Код в functions.php дочерней темы выполняется до functions.php родителя. Поэтому используйте уникальные префиксы функций и не объявляйте слишком общие имена вроде custom_scripts() или theme_setup().
Пример безопасного фильтра длины excerpt:
<?php
/**
* Уменьшает длину автоматического анонса на публичной части сайта.
*
* @param int $length Текущая длина excerpt.
* @return int
*/
function ink_child_excerpt_length( $length ) {
if ( is_admin() ) {
return $length;
}
return 28;
}
add_filter( 'excerpt_length', 'ink_child_excerpt_length' );
Если код работает с входящими данными, добавляйте sanitization и nonce-проверки. Для вывода данных используйте esc_html(), esc_attr(), esc_url() или wp_kses_post() по ситуации. Такой подход важен и в теме, и в плагине.
Как подключить дополнительные CSS и JavaScript
Для отдельных файлов используйте очередь WordPress. Не вставляйте теги <link> и <script> руками в header.php. Подробный разбор есть в статье как подключить CSS и JavaScript в WordPress через wp_enqueue.
<?php
/**
* Подключает файл дочерней темы только на странице услуги.
*/
function ink_child_enqueue_support_page_assets() {
if ( ! is_page( 'tehnicheskaja-podderzhka-sajta' ) ) {
return;
}
$script_path = get_stylesheet_directory() . '/assets/js/support.js';
wp_enqueue_script(
'ink-child-support',
get_stylesheet_directory_uri() . '/assets/js/support.js',
array(),
file_exists( $script_path ) ? (string) filemtime( $script_path ) : '1.0.0',
array(
'strategy' => 'defer',
'in_footer' => true,
)
);
}
add_action( 'wp_enqueue_scripts', 'ink_child_enqueue_support_page_assets' );
Для старых версий WordPress последний аргумент wp_enqueue_script() передавайте как true. В WordPress 6.3 и новее можно использовать массив с параметрами strategy и in_footer.
Частые ошибки
WordPress пишет, что родительская тема не найдена
Проверьте поле Template в style.css. Там должно быть имя папки родителя, а не название темы из интерфейса. Также проверьте, что родительская тема физически лежит в wp-content/themes.
После активации сайт выглядит без стилей
Родительская тема может не загружать CSS автоматически для дочерней темы. Добавьте подключение родительского и дочернего style.css через wp_enqueue_style(), очистите кеш и проверьте Network.
Появилась фатальная ошибка PHP
Частая причина — в дочернюю тему скопировали весь functions.php родителя. Верните резервную копию или отключите дочернюю тему через FTP, переименовав ее папку. Затем оставьте в functions.php только новые функции с уникальным префиксом.
Правки шаблона не применяются
Проверьте путь файла. Если в родительской теме файл лежит в подпапке, в дочерней теме нужна такая же структура. Также убедитесь, что нужная страница действительно использует этот шаблон, а не шаблон Elementor или отдельный template part.
Как проверить дочернюю тему перед релизом
- Проверьте PHP-синтаксис:
php -l wp-content/themes/rife-free-child/functions.php. - Откройте сайт без авторизации и убедитесь, что стили и скрипты отдают HTTP 200.
- Сравните главную, запись, страницу услуги, архив и мобильную версию.
- Проверьте форму заявки и интерактивные элементы.
- Проверьте исходный код: нет ли дублей CSS, лишних H1 и незамененных плейсхолдеров.
- Сохраните список измененных файлов, чтобы через месяц понимать, что именно переопределено.
Если нужна доработка уже существующего сайта без риска потерять правки при обновлениях, опишите задачу на странице технической поддержки WordPress. Перед изменениями можно отдельно проверить текущую тему, список переопределенных шаблонов и способ подключения ресурсов.
Ответы на вопросы
Можно ли создать дочернюю тему для любой темы?
Для большинства обычных тем — да. Но у сложных конструкторов и block themes могут быть свои рекомендации по наследованию, стилям и theme.json. Перед созданием проверьте документацию конкретной темы.
Нужно ли копировать все файлы родительской темы?
Нет. Копируйте только те шаблоны, которые действительно меняете. Остальное WordPress возьмет из родительской темы автоматически.
Что лучше: дочерняя тема или кастомный плагин?
Для внешнего вида и шаблонов — дочерняя тема. Для функциональности, которая должна сохраниться при смене дизайна, — кастомный плагин. Например, связанные статьи, SEO-блоки и постоянные интеграции лучше держать в плагине, а не в теме.
Итог
Чтобы создать дочернюю тему WordPress без потери изменений, сделайте отдельную папку в wp-content/themes, добавьте style.css с правильным полем Template и подключите стили через functions.php, если родитель не делает это сам. Не копируйте весь код родителя, не правьте сторонние плагины и проверяйте сайт после активации на нескольких типах страниц.
Официальная документация: Child Themes в Theme Handbook, заголовок style.css, functions.php, wp_enqueue_style() и get_stylesheet_directory_uri().
Нужна доработка WordPress-сайта?
Inkognitod помогает аккуратно дорабатывать WordPress, WooCommerce, ACF, формы, шаблоны и JavaScript-логику без правок ядра и хаоса в теме.

