Дочерняя тема

Оригинальное название: child theme

Коротко

Отдельная тема, которая берёт всё у родительской и хранит только ваши изменения: обновление родителя приходит, а правки остаются на месте.

Что такое «Дочерняя тема»

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

Минимальная дочерняя тема

Достаточно папки с файлом style.css, в заголовке которого поле Template указывает имя папки родителя:

/*
Theme Name: Astra Child
Template:   astra
*/

// functions.php дочерней темы
add_action( 'wp_enqueue_scripts', function () {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
} );

Подключать стили родителя нужно не всегда: многие темы делают это сами. Это видно по исходному коду страницы — если style.css родителя уже есть, второй раз его грузить не надо.

Как файлы наследуются

  • Шаблоны подменяются целиком: если в дочерней теме есть single.php, WordPress возьмёт его, а не родительский. Поиск идёт по иерархии шаблонов, и на каждом шаге дочерняя тема проверяется первой.
  • functions.php не подменяется: загружаются оба, сначала дочерний, потом родительский.
  • В блочных темах theme.json дочерней темы сливается с родительским, поэтому в нём пишут только отличия.

Для путей есть две пары функций: get_stylesheet_directory() указывает на дочернюю тему, get_template_directory() — на родительскую. Их путаница — частая причина «не подключается мой файл».

Чего не делать

Копировать в дочернюю тему все шаблоны родителя «на всякий случай» — тогда обновления до них не дойдут, и смысл схемы теряется. Переносят только те файлы, которые действительно меняются. Многое вообще не требует копирования шаблонов: изменить вывод можно хуками в functions.php. Такой аккуратный подход — основа доработки сайтов на WordPress, которые потом нормально обновляются.

Обновлено:

Все термины раздела «WordPress»

Что будем искать? Например,Продвижение