Для чего нужны дочерние темы, как правильно создать дочернюю тему и работать с ней?
Ни для кого не секрет, что для сайтов на WordPress существует множество шаблонов оформления (так называемых «тем»). Они могут нести в себе не только оформление, но и расширение функционала. То, что темы хорошо поддерживаются и регулярно обновляются — обычное явление, при чем это касается как платных, так и бесплатных шаблонов.
Темы обновляются по многим причинам:
- Исправляются различного рода ошибки. Это могут быть javascript-ошибки, доработки стилей для кроссбраузерности, а также доработки по функционалу;
- Обновляются библиотеки js, css-фреймворки;
- Добавляются новые возможности. Настройки, новые типы записей, новые таксономии и прочее.
Из всего вышеперечисленного вывод можно сделать довольно однозначный:
Обновлять темы нужно!
Однако, при обновлении темы все файлы внутри папки перезаписываются. Поэтому если вы вносили изменения в файлы темы, а потом решили обновиться — все ваши доработки пропадут.
Избежать этого как раз помогают дочерние темы!
Дочерние темы в WordPress позволяют вносить изменения в код темы без внесения изменений в файлы
Разберем подробнее!
Создание дочерней темы
Самая простая дочерняя тема содержит всего один файл
style.css
.
/*
Theme Name: Twenty Ten Child
Theme URI: https://remontka.com/
Description: Пример дочерней темы на базе Twenty Ten
Author: @remontka
Author URI: https://remontka.com/
Template: twentyten
Version: 0.1.0
*/
@import url("../twentyten/style.css");
Вы видите пример дочерней темы. В качестве родительской выступает тема Twenty Ten.
Особенности работы
Родительская тема указывается в параметре
Template
, и при этом там должно быть указано не название темы, а название папки, в которой эта тема лежит.
Файл стилей дочерней темы
style.css
полностью заменяет собой файл стилей родителя
Это значит, что для сохранения стилей родителя первым делом необходимо будет выполнить импорт файла
style.css
из родительской темы.
Файл с функционалом дочерней темы
functions.php
загружается перед аналогичным файлом родителя
Это связано с тем, чтобы:
- не дублировать код;
- оставить возможность добавлять функционал, и вносить изменения в существующий.
Именно поэтому правилом хорошего тона является оборачивать каждую функцию в оболочку:
if (!function_exists("function_name")) {
function function_name() {
// Код.
}
}
Это позволяется избежать создания двух функций с одинаковыми именами, а так как файл дочерней темы загружается быстрее аналогичного файла родителя, то вы эти функции можете изменять по своему желанию. С ошибками PHP при этом вы не встретитесь.
Остальные файлы оформления шаблона
В остальном же, при активации дочерней темы, WordPress в первую очередь будет искать файл оформления шаблона в папке с ней, а уж если не найдет, то возьмет оформление из файла родителя.
Таким образом можно изменять темы до неузнаваемости, и при этом сохранить возможность получать обновления!