Настройка темы для WordPress с помощью дочерних тем

Итак, у вас на сайте есть тема для WordPress, неважно бесплатная или коммерческая, и вы хотите её настроить. Везде даются рекомендации делать это, создав дочернюю тему. Но что это значит и как это сделать?

Что такое дочерняя тема?

WordPress Codex определяет дочернюю тему (child theme) следующим образом:

Дочерняя тема WordPress (child theme) это тема, которая наследует функциональность другой темы, называющейся родительской (parent theme), и позволяет изменять или добавлять функции к родительской теме.

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

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

Зачем вообще использовать дочернюю тему?

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

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

Если вы нажмете кнопку «Обновить», то измененные вами в оригинальной теме файлы будут замещены обновленными! Все изменения будут потеряны, и вам придется начинать все сначала.

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

Теперь понятно зачем, но что делать дальше?

Ваша оригинальная тема, которую мы называем также родительской темой, находится в папке /wp-content/themes/.

Для примера, мы создадим дочернюю тему для WordPress, основанную на стандартной теме «Twenty Twelve».

В данном случае, чтобы создать дочернюю тему, новую папку рядом с папкой темы «Twenty Twelve» и назовем её twentytwelve-child:

Теперь понятно зачем, но что делать дальше?

Содержимое файла стилей style.css в папке дочерней темы нужно изменить следующим образом:

/*
Theme Name:     Twenty Twelve Child
Theme URI:      http://wp.tutsplus.com/
Description:    Child theme for Twenty Twelve
Author:         Japh
Author URI:     http://wp.tutsplus.com/author/japh
Template:       twentytwelve
Version:        1.0.0
*/
 
@import url("../twentytwelve/style.css");

В этом коде есть две важнейшие строки:

  1. Template: twentytwelve – которая сообщает WordPress, что данная тема является дочерней по отношению к теме «Twenty Twelve»;
  2. @import url("../twentytwelve/style.css"); – которая подгружает файл стилей style.css из родительской темы (в нашем случае это twentytwelve).

Теперь, вы можете войти в панель управления WordPress, увидеть там тему «Twenty Twelve Child» и активировать её.

Примечание:

Строка с оператором @import не является строго обязательной для того, чтобы дочерняя тема была валидной. Я включил её для того, чтобы проще было производить модификации.

Я создал свою дочернюю тему! Что теперь?

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

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

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

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

Вышеописанный механизм позволяет взять всю функциональность из родительской темы. К родительским темам также можно подключать дополнительные функции (pluggable function) и переопределять их из дочерних без возникновения конфликтов.

Что значит pluggable function?

Если коротко, что pluggable function это механизм проверки на то, объявлена ли была функция ранее или нет. Это предотвращает конфликты в случае, когда в дочерней теме объявляется функция с уже существующим в родительской теме именем.

Заключение

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

РедакцияПеревод статьи «How to Customize Your WordPress Theme With a Child Theme»