Что такое дочерняя тема WordPress и зачем она нужна? Дочерняя тема (child theme) — это отдельная тема, которая наследует оформление и функции родительской темы, но позволяет вносить свои изменения, не трогая файлы родительской. Так ваши правки не пропадут при обновлении темы. Создать её можно вручную из двух файлов — style.css и functions.php — или в пару кликов через плагин. В этом гайде для новичков — пошаговая инструкция с примерами PHP и JS-кода.
Что такое дочерняя тема и зачем она нужна
Дочерняя тема — это тема WordPress, которая «наследует» внешний вид и функциональность другой темы, которую называют родительской. Она не содержит полный код оформления, а только ваши изменения поверх родительской темы.
Представьте, что родительская тема — это готовый дом, а дочерняя — ваша перепланировка внутри. Вы можете перекрасить стены, добавить перегородки и поменять проводку, не разрушая несущие конструкции. При этом если архитектор (разработчик темы) выпускает обновление — дом обновляется, а ваша перепланировка остаётся на месте.
Главные причины использовать дочернюю тему:
- Безопасность обновлений. Если вы правите файлы родительской темы напрямую, любое обновление темы затрёт все ваши изменения. С дочерней темой обновления проходят безболезненно.
- Скорость отката. Сломали что-то в дочерней теме? Просто переключитесь обратно на родительскую — сайт снова работает.
- Чистота кода. Все ваши правки лежат в одном месте, а не разбросаны по десяткам файлов чужой темы.
- Переносимость. При смене темы вы не теряете свои функции — они живут в дочерней теме.
Подробнее о том, как вообще устроены темы и куда ставить код, читайте в нашем гайде о полезных сниппетах для functions.php.
Когда нужна дочерняя тема, а когда можно обойтись
Дочерняя тема — не панацея. Иногда она избыточна, а иногда — единственный правильный вариант. Вот сравнительная таблица, которая поможет решить:
| Ситуация | Дочерняя тема | Почему |
|---|---|---|
| Хочу поменять цвета и шрифты | Не обязательна | Достаточно настроек кастомайзера или плагина |
| Добавляю CSS-стили к теме | Рекомендуется | Стили переживут обновление темы |
| Меняю шаблоны страниц (PHP) | Обязательна | Иначе правки сотрутся при обновлении |
| Добавляю функции в functions.php | Обязательна | Родительский functions.php перезаписывается при обновлении |
| Тема больше не обновляется разработчиком | Можно и без неё | Но лучше сменить тему или форкнуть её |
| Делаю сайт клиенту «на вырост» | Обязательна | Клиент сможет обновлять тему без риска сломать дизайн |
Золотое правило: если вы собираетесь писать любой код поверх темы — делайте дочернюю. Это занимает пять минут, а экономит часы работы и нервы.
Как создать дочернюю тему вручную: два файла
Минимальная дочерняя тема состоит из двух файлов в папке /wp-content/themes/. Создайте папку, например mytheme-child, и положите в неё:
1. Файл style.css — здесь указывается, какая тема является родительской:
/*
Theme Name: MyTheme Child
Theme URI: https://delai-sait.ru/
Description: Дочерняя тема для MyTheme — мои правки поверх родительской
Author: Ваше имя
Author URI: https://delai-sait.ru/
Template: mytheme
Version: 1.0.0
*/
/* Ваши стили добавляйте ниже */
Ключевая строка — Template: mytheme. Здесь указывается папка родительской темы (не название!). Если родительская тема лежит в /wp-content/themes/twentyseventeen/, пишем Template: twentyseventeen.
2. Файл functions.php — подключаем стили и скрипты:
<?php
// Подключаем стили родительской и дочерней темы
function mytheme_child_enqueue_styles() {
// Сначала стили родительской темы
wp_enqueue_style( 'mytheme-parent-style', get_template_directory_uri() . '/style.css' );
// Потом стили дочерней темы — они перекроют родительские
wp_enqueue_style( 'mytheme-child-style', get_stylesheet_uri(),
array( 'mytheme-parent-style' ), '1.0.0' );
}
add_action( 'wp_enqueue_scripts', 'mytheme_child_enqueue_styles' );
Теперь зайдите в админку: Внешний вид → Темы — дочерняя тема появится в списке. Активируйте её, и сайт продолжит работать как раньше, но теперь ваши правки в безопасности.
Как правильно подключить стили и скрипты
Самая частая ошибка новичка — подключить стили дочерней темы через обычный <link> в header.php. Так делать нельзя: WordPress требует подключения через wp_enqueue_style(), иначе стили могут загружаться в неправильном порядке или дублироваться.
Вот правильный вариант с учётом зависимостей и версии (версия поможет сбросить кэш браузера после правок):
<?php
function mytheme_child_enqueue_assets() {
// Стили: дочерняя зависит от родительской
wp_enqueue_style( 'mytheme-parent', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'mytheme-child', get_stylesheet_uri(),
array( 'mytheme-parent' ), filemtime( get_stylesheet_directory() . '/style.css' ) );
// Скрипт: подключаем свой JS-файл из папки дочерней темы
wp_enqueue_script( 'mytheme-custom', get_stylesheet_directory_uri() . '/js/custom.js',
array( 'jquery' ), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_child_enqueue_assets' );
Обратите внимание на функции:
get_template_directory_uri()— путь к родительской теме;get_stylesheet_directory_uri()— путь к дочерней (активной) теме;- пятый параметр
trueвwp_enqueue_script— загрузка скрипта в подвале, а не в head.
Пример содержимого js/custom.js — добавим кнопке класс при клике:
// Простой JS в дочерней теме
jQuery( document ).ready( function( $ ) {
$( '.site-header' ).on( 'click', '.menu-toggle', function() {
$( 'body' ).toggleClass( 'menu-open' );
} );
} );
Если вы не используете jQuery, подключите обычный скрипт — WordPress умеет работать и с ванильным JS:
document.addEventListener( 'DOMContentLoaded', function() {
var btn = document.querySelector( '.menu-toggle' );
if ( btn ) {
btn.addEventListener( 'click', function() {
document.body.classList.toggle( 'menu-open' );
} );
}
} );
Как переопределять шаблоны родительской темы
Главная суперсила дочерней темы — переопределение шаблонов. WordPress устроен так, что если файл с тем же именем есть в дочерней теме, он используется вместо файла родительской.
Например, родительская тема выводит шапку из файла header.php. Скопируйте его в дочернюю тему и измените — WordPress возьмёт ваш вариант:
// В дочерней теме: /wp-content/themes/mytheme-child/header.php
// Это копия header.php родительской темы с вашими правками
// Например, добавим свой класс к body:
<body <?php body_class( 'my-custom-class' ); ?>>
Так можно переопределять header.php, footer.php, single.php, page.php, archive.php и любые другие шаблоны. Никаких специальных хуков не нужно — достаточно совпадения имени файла.
Иерархию шаблонов WordPress можно посмотреть в официальной схеме на developer.wordpress.org. А если вы работаете с кастомными типами записей, вам пригодится наш гайд о создании кастомных типов записей.
Как переопределять функции родительской темы
Файлы шаблонов переопределить легко, а вот функции — сложнее. Если родительская тема объявила функцию, вы не можете объявить её с тем же именем — будет фатальная ошибка.
Правильная стратегия — отключить родительскую функцию через хук и добавить свою:
<?php
// Родительская тема делает так:
// add_action( 'wp_head', 'mytheme_analytics' );
// В дочерней теме отключаем её и добавляем свою версию
function mytheme_child_remove_parent_analytics() {
remove_action( 'wp_head', 'mytheme_analytics' );
}
add_action( 'wp_head', 'mytheme_child_remove_parent_analytics', 0 );
// И добавляем свою функцию с новым кодом
function mytheme_child_analytics() {
echo '<!-- здесь мой код аналитики -->';
}
add_action( 'wp_head', 'mytheme_child_analytics' );
Важный нюанс: remove_action() сработает только если родительская функция была добавлена через add_action(), а не объявлена напрямую в шаблоне. Если функция вызывается прямо в файле header.php — переопределяйте шаблон (см. предыдущий раздел).
Чтобы отключить фильтр, используйте remove_filter() с теми же аргументами, что и в add_filter():
// Родительская тема:
// add_filter( 'excerpt_length', 'mytheme_excerpt_length', 20 );
// Дочерняя тема: отключаем и задаём свою длину
add_action( 'init', function() {
remove_filter( 'excerpt_length', 'mytheme_excerpt_length', 20 );
} );
add_filter( 'excerpt_length', function( $length ) {
return 40;
} );
Хукам и фильтрам посвящён отдельный материал — почитайте наш гайд о сниппетах для functions.php, там разобраны десятки готовых примеров.
Создание дочерней темы через плагин
Ручной способ — это два файла, вы уже умеете. Но если хочется быстрее или нужно создать дочернюю тему для сложной темы с десятками файлов — используйте плагин Child Theme Configurator.
Как это работает:
- Установите плагин Child Theme Configurator из репозитория WordPress (бесплатный).
- В админке: Инструменты → Child Themes.
- Выберите родительскую тему из выпадающего списка.
- Нажмите Analyze — плагин проверит тему на совместимость.
- Нажмите Create New Child Theme — плагин сам создаст папку, style.css, functions.php и при необходимости скопирует нужные шаблоны.
- Включите дочернюю тему и проверьте сайт.
Плагин также умеет анализировать, какие файлы темы вы уже правили, и перенести их в дочернюю тему — удобно при «переезде» с уже исправленной родительской темы.
Частые ошибки новичков
Вот пять ошибок, из-за которых дочерняя тема не работает или ломает сайт:
- Неправильное имя в Template. В
Template:пишется имя папки родительской темы, а не её название из style.css. Ошибка в этой строке — WordPress вообще не покажет дочернюю тему в списке. - Забыли подключить стили родительской темы. Без этого сайт «разденется» — пропадёт вся вёрстка. В functions.php обязательно подключайте и родительский, и дочерний style.css.
- Правка родительской темы вместо дочерней. После активации дочерней темы убедитесь, что редактируете файлы именно в её папке. Многие редакторы открывают файлы родительской темы по привычке.
- Дублирование функций. Если функция с тем же именем уже есть в родительской теме, объявление её в дочерней вызовет фатальную ошибку. Используйте
remove_action()или переименуйте функцию. - Отсутствие бэкапа. Перед любыми правками делайте резервную копию. Как настроить автоматические бэкапы, читайте в статье о сайтах на WordPress.
Если что-то пошло не так и сайт выдал белый экран — не паникуйте. Подключитесь к серверу по FTP и переименуйте папку дочерней темы, например mytheme-child-disabled. WordPress автоматически откатится на родительскую тему.
Вывод
Дочерняя тема — это базовая гигиена WordPress-разработчика. Она занимает пять минут на создание, но защищает ваши правки от обновлений темы, упрощает откат при ошибках и держит код в одном месте.
Краткий план действий для новичка:
- Создайте папку дочерней темы с style.css и functions.php.
- Правильно укажите
Template:— имя папки родительской темы. - Подключите стили через
wp_enqueue_style(), не через<link>. - Переопределяйте шаблоны копированием файлов, а функции — через
remove_action(). - Перед каждым изменением делайте бэкап.
Если вам нужен сайт на WordPress под ключ — с правильно настроенной дочерней темой и безопасными обновлениями — посмотрите, как мы делаем сайты на WordPress и что входит в стоимость. А больше технических материалов для разработчиков — в разделе «Разработка WordPress» на delai-sait.ru.
Что такое дочерняя тема WordPress простыми словами?
Это тема, которая наследует внешний вид и функции родительской темы, но позволяет вносить свои изменения в отдельные файлы. При обновлении родительской темы ваши правки не пропадают, а при ошибке можно быстро переключиться обратно.
Как создать дочернюю тему WordPress вручную?
Создайте папку в /wp-content/themes/ (например mytheme-child) и положите в неё два файла: style.css с заголовком, где указана строка Template: имя-папки-родительской-темы, и functions.php, где через wp_enqueue_style подключаются стили родительской и дочерней темы. Затем активируйте тему в админке.
Что писать в Template: — название темы или папки?
В строке Template: указывается имя папки родительской темы (например, twentyseventeen), а не её название из шапки style.css. Если указать неверное имя, WordPress не увидит родительскую тему, и дочерняя тема не появится в списке или не активируется.
Обязательно ли подключать стили родительской темы в дочерней?
Да. Дочерняя тема не загружает стили родительской автоматически. В functions.php дочерней темы нужно вызвать wp_enqueue_style() для style.css родительской темы и для своего style.css с зависимостью от родительского — иначе вёрстка родительской темы пропадёт.
Пропадут ли мои правки при обновлении родительской темы?
Нет. Это главный смысл дочерней темы. Все ваши изменения хранятся в файлах дочерней темы, а обновление затрагивает только файлы родительской. Поэтому правьте только дочернюю тему и не трогайте файлы родительской.
Как переопределить функцию родительской темы в дочерней?
Если функция была добавлена через add_action() или add_filter(), отключите её через remove_action()/remove_filter() с теми же приоритетом и аргументами, затем добавьте свою. Если функция вызывается напрямую в шаблоне — скопируйте шаблон в дочернюю тему и измените его.
Какой плагин создаёт дочернюю тему автоматически?
Child Theme Configurator — бесплатный плагин из репозитория WordPress. Он анализирует родительскую тему, создаёт папку, style.css и functions.php, а при необходимости переносит в дочернюю тему уже изменённые файлы шаблонов.


