Дочерние темы 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мотрите другие статьи: