Дочерняя тема: зачем она нужна

Дочерняя тема: зачем она нужна

К нам регулярно приходят владельцы сайтов с одной и той же историей: дизайнер или фрилансер когда-то «подкрутил» шапку, поменял шрифты, добавил блок в карточку товара, а потом кто-то нажал кнопку «Обновить тему». Сайт мгновенно вернулся к заводскому виду, и восстановить правки уже некому — исполнитель недоступен, резервной копии нет. Почти всегда причина одна: изменения вносились прямо в файлы основной темы. Решение этой проблемы в WordPress существует давно и называется дочерней темой. Разберёмся, как она устроена и когда без неё действительно не обойтись.

Как устроены родительская и дочерняя темы

Тема в WordPress — это набор файлов, которые отвечают за внешний вид сайта: шаблоны страниц, стили, скрипты, файл functions.php с дополнительными функциями. Разработчик темы периодически выпускает обновления: закрывает уязвимости, исправляет ошибки, добавляет совместимость с новым ядром и редактором блоков. При обновлении папка темы на сервере полностью перезаписывается. Всё, что лежало внутри и отличалось от оригинала, исчезает.

Дочерняя тема — это отдельная небольшая тема, которая объявляет себя «наследницей» основной. Внутри у неё может быть всего два файла: style.css с заголовком, где указан шаблон-родитель, и functions.php, подключающий стили. WordPress работает по простому правилу: если нужный файл шаблона есть в дочерней теме, используется он; если нет — берётся файл из родительской. Так вы переопределяете только то, что действительно меняли, а всё остальное продолжает приходить из основной темы и получать обновления.

Важный момент: functions.php дочерней темы не заменяет родительский, а загружается дополнительно, причём раньше. Это позволяет добавлять свои функции, не трогая чужой код, но требует аккуратности — объявление функции с тем же именем, что у родителя, может привести к фатальной ошибке.

Когда дочерняя тема нужна, а когда нет

Дочерняя тема — не обязательный ритуал для каждого сайта. Если вы используете тему «как есть» и меняете только то, что предусмотрено настройщиком (цвета, логотип, шрифты из списка, расположение сайдбара), эти параметры хранятся в базе данных и переживут обновление. Создавать дочернюю тему ради пары галочек в настройках бессмысленно.

А вот ситуации, в которых она необходима:

  • вы правите PHP-шаблоны: шапку, подвал, карточку записи, архив, страницу поиска;
  • нужно переопределить шаблоны WooCommerce — например, изменить порядок блоков в карточке товара или вид корзины;
  • добавляется значительный объём собственных стилей, который неудобно хранить в поле «Дополнительные стили» настройщика;
  • в functions.php появляются свои хуки, фильтры, регистрация областей меню или размеров миниатюр;
  • над сайтом работает несколько человек, и нужно чётко отделить «наш» код от кода разработчика темы.

Есть и обратная сторона. Некоторые темы-конструкторы и визуальные билдеры хранят почти всё в базе и сами предлагают безопасные способы кастомизации. Для блочных тем, которые используют полный редактор сайта, многие изменения шаблонов также сохраняются в базе. В таких случаях дочерняя тема нужна реже, но если вы планируете вносить правки в код — она всё равно остаётся лучшей практикой.

Что именно переносить в дочернюю тему

Частая ошибка — скопировать в дочернюю тему всю родительскую целиком «на всякий случай». В результате дочерняя тема перестаёт получать исправления: любой скопированный файл навсегда «замораживается» в той версии, в которой его взяли. Если разработчик потом закроет в этом шаблоне уязвимость, ваш сайт её не получит.

Правильный подход — переносить файлы точечно. Нужно изменить шапку — копируете только header.php. Нужно поправить вывод одной записи — только single.php или соответствующий шаблон-часть. Для WooCommerce структура папок повторяет плагин: шаблон кладётся в каталог woocommerce внутри дочерней темы с сохранением пути.

Что меняемГде лучше разместить
Цвета, логотип, шрифты из настроекНастройщик темы, дочерняя не нужна
Небольшие правки CSSДополнительные стили или style.css дочерней темы
Разметка шапки, подвала, карточекКопия шаблона в дочерней теме
Свои функции, связанные с оформлениемfunctions.php дочерней темы
Типы записей, шорткоды, интеграцииОтдельный плагин, а не тема

Последняя строка таблицы особенно важна. Функциональность, которая должна работать независимо от оформления, — пользовательские типы записей, отправка данных в CRM, шорткоды в текстах — не стоит держать в теме вообще, даже в дочерней. Если когда-нибудь вы смените дизайн, вместе с темой исчезнут и каталоги, и интеграции, а в текстах страниц останутся «голые» шорткоды в квадратных скобках.

Как создать дочернюю тему: пошагово

Технически процесс занимает несколько минут, но делать его лучше на копии сайта или хотя бы после резервного копирования.

  1. Сделайте бэкап файлов и базы данных. При переключении темы WordPress может сбросить назначенные области меню и виджеты.
  2. Создайте папку в каталоге тем, например название-родителя-child.
  3. Добавьте style.css с заголовком: имя темы и строка Template с точным названием папки родительской темы. Без правильного значения Template WordPress не увидит связь.
  4. Добавьте functions.php и подключите в нём стили через функцию постановки в очередь. Старый способ с директивой импорта в CSS замедляет загрузку и сейчас не рекомендуется.
  5. Активируйте тему в разделе «Внешний вид», затем проверьте меню, виджеты и настройки настройщика — при необходимости назначьте их заново.
  6. Перенесите правки из родительской темы в дочернюю, а родительскую обновите до оригинальной версии.

Существуют плагины, которые создают дочернюю тему в пару кликов. Ими можно пользоваться, но после создания плагин лучше удалить — держать на сайте лишнее расширение ради разовой операции незачем.

Перенос правок с «испорченной» темы

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

  • скачиваем с официального источника оригинал той же версии темы, что стоит на сайте;
  • сравниваем файлы построчно специальной утилитой сравнения и составляем список всех расхождений;
  • отделяем осмысленные правки от мусора — бывают и следы взлома, внедрённые в шаблоны;
  • переносим нужные изменения в дочернюю тему или плагин, лишнее удаляем;
  • на тестовой копии обновляем родительскую тему и сверяем внешний вид страниц.

Если версия темы очень старая, иногда выясняется, что за прошедшее время разработчик сильно переработал структуру шаблонов, и перенесённые файлы уже не стыкуются с новой версией. Тогда шаблоны в дочерней теме приходится адаптировать заново. Это нормальная работа, но её стоит планировать заранее, а не обнаруживать после нажатия кнопки обновления на рабочем сайте.

Совет от студии: перед любыми работами с темой попросите исполнителя показать, где лежат его правки. Если ответ — «в самой теме», это повод для разговора. Доработки, сделанные в дочерней теме или отдельном плагине, легко передать другому специалисту, а правки, разбросанные по файлам основной темы, превращаются в мину замедленного действия.

Типичные ошибки при работе с дочерней темой

Неправильное подключение стилей

Если стили родительской темы не подключены или подключены дважды, сайт либо «рассыпается», либо грузит лишние файлы. Нужно учитывать, как именно родительская тема подключает собственные стили: одни темы делают это сами и учитывают дочернюю, другие требуют явного подключения.

Копирование устаревших шаблонов

WooCommerce при обновлениях сообщает в разделе состояния системы, что шаблоны в теме устарели. Это сигнал: переопределённые файлы нужно сравнить с новыми версиями и перенести изменения. Игнорировать предупреждение нельзя — устаревшие шаблоны корзины и оформления заказа ломаются чаще всего.

Правки в functions.php без проверки

Одна пропущенная скобка в functions.php приводит к белому экрану или сообщению о критической ошибке. Редактировать этот файл через встроенный редактор админки рискованно: если сайт упадёт, вернуться в админку уже не получится. Правки лучше вносить через FTP или панель хостинга, имея под рукой рабочую копию файла.

Обновление родителя без тестирования

Дочерняя тема защищает от потери правок, но не от несовместимости. Крупное обновление родителя может изменить названия классов или хуков, на которые опираются ваши стили и функции. Поэтому значительные обновления лучше сначала проверять на тестовой копии.

Как дочерняя тема упрощает поддержку

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

На сайтах, которые мы берём на техническую поддержку, первым делом проверяем, как организованы правки темы. Если они внесены в основную тему, предлагаем переносить их в дочернюю — обычно это несколько часов работы, которые потом многократно окупаются при каждом обновлении. При создании сайтов мы сразу закладываем дочернюю тему или собственную тему, где обновления контролируем сами.

Вывод

Дочерняя тема — простой и надёжный способ отделить ваши доработки от кода разработчика темы. Она нужна, как только правки выходят за пределы стандартных настроек: шаблоны, PHP-функции, большие объёмы стилей, переопределения WooCommerce. Переносить в неё стоит только изменённые файлы, а функциональность, не связанную с оформлением, лучше выносить в отдельный плагин. Если сайт уже работает на изменённой основной теме, не откладывайте наведение порядка: каждое пропущенное обновление увеличивает риски безопасности. Мы поможем сравнить файлы, перенести правки и обновить тему без потери дизайна — достаточно написать нам через страницу контактов.

Читайте также

Ещё несколько материалов из рубрики «WordPress»

Мультиязычный сайт на WordPress
WordPress

Мультиязычный сайт на WordPress

Разбираем, как сделать сайт на WordPress на нескольких языках: какие бывают архитектуры, как устроить адреса для SEO, что обычно забывают перевести, как быть с магазином и как поддерживать переводы после запуска.

Время чтения: 7 мин
SEO-настройки WordPress после запуска
WordPress

SEO-настройки WordPress после запуска

Сайт запущен, но поисковики его не видят или показывают тестовые страницы? Собрали чек-лист настроек WordPress, которые нужно проверить сразу после запуска, — от галочки индексации до карты сайта и склейки зеркал.

Время чтения: 7 мин
Установка WordPress: пошаговая инструкция
WordPress

Установка WordPress: пошаговая инструкция

Пошаговая инструкция по установке WordPress от практиков: что подготовить заранее, как пройти ручную установку, какие настройки сделать сразу и каких ошибок избежать, чтобы потом не пришлось переделывать сайт.

Время чтения: 9 мин

Остались вопросы?

Опишите задачу — специалисты студии ответят на почту и предложат решение для вашего сайта.

Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности сайта