Дочерние темы WordPress

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

Как сделать дочернюю тему

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

Дочерние темы - это хороший инструмент разработки, но его гибкость зависит от правильности создания родитской темы. Некоторые темы подходят в качестве родительских лучше, чем другие. Поэтому далее в примерах этой статьи мы используем стандартную тему "Twenty Nineteen", которая доступна в WordPress из коробки.

Чтобы создать свою дочернюю тему, достаточно создать папку для неё и один "style.css" файл. Создадим папку по адресу:
/wp-content/themes/twentynineteen-child
В этой папке создадим файл "style.css" со следующим содержанием:
/*
Theme Name: Дочерняя тема
Template: twentynineteen
*/

/* стили родительской темы. Они должны 
стоять перед стилями дочерней темы, 
иначе их загрузки не произойдёт. */
@import url("../twentynineteen/style.css");

/* стили дочерней темы  */
h1{ font-size: 20px; color: green; }
Строки в комментарии "Theme Name" и "Template" являются обязательными. А "Template" содержит название той темы (регистрозависимое название её папки), которая является родительской для создания.
Обратите внимание, что из-за "@import" запроса файлы стилей загружаются последовательно, что увеличивает время загрузки страницы.
На этом создание дочерней темы можно считать законченным. Осталось только активировать тему в панели администрирования WordPress, чтобы увидеть изменения.

Как было сказано ранее, дочерняя тема берёт недостающие файлы из родительской. Если же файл создан в дочерней, то родительский не будет использоваться. Это верно для большинства файлов, кроме "functions.php", который содержит функции темы. Функции в этом файле из родительской темы не заменяют, а дополняют дочерние.

В коде примера мы импортировали через "import" стили родительской темы. Потому что файл style.css существует и в родительской, и в дочерней теме. А в таком случае он не будет загружаться из родительско темы - придётся загружать его принудительно.

Файл "functions.php" в дочерней теме

Файлы "functions.php" дочерней и родительской темы подключаются всегда. Причём сначала подключается "functions.php" в дочерней теме, а потом в родительской. Отсюда появляется тезис, который был озвучен в начале параграфа: не все темы подходят на роль родительской. Потому что если в родительской теме функции не проверяются на существование, то они будут конфликтовать с одноимёнными функциями в дочерней теме. Необходимо чтобы в родительской теме все функции были написаны так:
if( ! function_exists( 'название_функции' ) ){
   function название_функции(){
      // код функции
   }
}
В таком случае при совпадении названий функций в двух файлах будет использоваться функция в дочерней теме.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб