Дочерние темы WordPress: Основа и практика

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

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

Что такое родительская тема?

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

Понятие дочерней темы

Дочерняя тема (Child Theme) создается на основе родительской темы, наследуя её структуру и функциональность. Она используется для внесения изменений в дизайн и функциональность вашего сайта, не затрагивая основные файлы родительской темы. Это позволяет кастомизировать сайт, сохраняя возможность обновления родительской темы без потери ваших настроек и изменений.

Для чего нужна дочерняя тема?

На этот вопрос я ответил выше, но давайте повторим, чтобы закрепить и углубить понимание.

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

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

к оглавлению ↑

Создаём дочернюю тему WordPress

Как всегда, существует несколько способов решения одной и той же задачи. Один – более простой и быстрый, он включает использование плагина. Другой вариант предполагает самостоятельную работу, то есть создание с нуля. Мы рассмотрим оба, чтобы каждый мог выбрать наиболее подходящий для себя.

Первый способ: создаем дочернюю тему вручную

Шаг 1: Сначала создаёте папку с названием будущей дочерней темы. Вы можете использовать название родительской и просто добавить слово «Child». Например, «mytheme-child».

Шаг 2: Затем в этой же папке создайте файл с названием style.css. Чтобы распознать дочернюю тему в самом начале файла добавляем следующий код:

/*
Theme Name:   Тема блога
Template:     twentyfifteen
Description:  Моя дочерняя тема для блога
Author:       Имя автора
Author URI:   https://domain.ru
Version:      1.0.0
*/

Самое важное

  • Theme Name (Имя Темы): уникальное название вашей дочерней темы (будет показано в админке).
  • Template (Шаблон): здесь указывается название родительской темы, от которой вы создаете дочернюю.
Важно отметить, что WordPress учитывает регистр букв. То есть если название родительской темы начинается с большой буквы, то здесь должно также быть указано точное название темы.
Все остальные поля, такие как автор, адрес, описание и прочие, являются необязательными. Вы можете даже удалить их или полностью свободно менять текст по своему усмотрению.

Шаг 3: Основная часть работы выполнена. Теперь необходимо импортировать стили из родительской темы в дочернюю. Ранее для этой задачи использовалось свойство @import в файле стилей. Однако это замедляет работу сайта и рекомендуется другой метод.

Для этого создаем файл в нашей папке с названием functions.php. В начале этого файла добавляем код (открывающий тег <?php обязательно должен быть в начале), который добавит стили родительской темы в дочернюю.

<?php
function ws_enqueue_parent_styles() {
    // Подключаем стили родительской темы
    wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
}
add_action('wp_enqueue_scripts', 'ws_enqueue_parent_styles');

Шаг 4: Теперь загрузите эту папку на ваш хостинг в папку с темами wp-content/themes/. В админке перейдите в раздел «Внешний вид – Темы». Найдите только что созданную нами дочернюю тему, которая будет называться так, как вы указали в файле стилей CSS, и активируйте её.

Она будет представлена без изображения. Если вы хотите изменить это, просто скопируйте картинку (обычно она называется screenshot.png) из родительской темы и вставьте в дочернюю.

к оглавлению ↑

Второй способ: создаем дочернюю тему с плагином WP Child Theme Generator

плагин дочерней темы

Скачать плагин

После установки и активации плагина, перейдите в раздел «Внешний вид — Child Theme Gen». В этом разделе вы найдете выпадающий список, в котором будут перечислены все установленные на вашем сайте темы. Вам нужно выбрать ту тему, на основе которой вы хотите создать дочернюю.

Child Theme

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

Child Theme

После чего нажмите кнопку «Create Child Theme». В результате дочерняя тема будет автоматически создана и активирована.

к оглавлению ↑

Принцип работы с дочерней темой

Давайте начнем знакомство с работой дочерней темы. Несмотря на то, что на этот момент суть её должна вам быть уже понятна, всё же могут возникнуть некоторые вопросы по работе с файлами (шаблоны) и стилями темы.

Работа с файлами (шаблонами) темы

Допустим, нам необходимо добавить свою область виджета в header (шапку) WordPress. Как это сделать?

Сначала скопируйте файл header.php из родительской темы и вставьте его в дочернюю. Это позволит вам изменять этот файл без изменения оригинального файла в родительской теме.

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

Принцип работы, который я описал, применим ко всем остальным файлам. Если вам необходимо внести изменения в какую-либо часть сайта (к примеру, footer.php, sidebar.php и т.д.) вы начинаете с копирования файлов, отвечающих за эту конкретную область, и затем переносите их в дочернюю тему. Все последующие изменения и настройки уже выполняются внутри этой дочерней темы.

к оглавлению ↑

Файлы в подпапках

И ещё важно учитывать директорию файлов. Обратите внимание, что в родительской теме многие файлы располагаться в папке с переменным названием. Чаще всего шаблоны для записей, страниц и контента могут находиться в папке «template-parts» или с похожим названием.

Если вы планируете внести изменения в эти файлы, вам нужно создать аналогичную структуру в вашей дочерней теме. В частности, вы должны создать папку с тем же именем, что и в родительской теме (например, «template-parts»), а затем скопировать тот файл, который вы хотите изменить, в эту новую папку.

к оглавлению ↑

Работа со стилями темы

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

Для примера представьте, что нам нужно изменить цвет футера WordPress. Мы можем воспользоваться инспектором браузера (это инструмент веб-разработчика) для того, чтобы найти стили, применяемые к нужному элементу на странице. Вот пример кода:

footer.site-footer .footer-wrapper {
  background: rgba(255, 255, 255, 0.9); /* цвет фона*/
  border-radius: 10px;
  padding: 30px;
}

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

footer.site-footer .footer-wrapper {
  background: red;/* цвет фона*/
}

В остальных ситуациях процесс остается неизменным. То есть таким путем переопределяем все стили к нужным элементам.

к оглавлению ↑

Как перенести функции из родительской в дочернюю тему WordPress

Эта возможность зависит от разработчиков родительской темы. Если они учли все детали при кодировании, то изменения можно будет внести без особых трудностей. Однако если разработчики родительской темы не учли это, то перенос функций может оказаться сложным, а в некоторых случаях – невозможным.

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

Чтобы этого не случилось, существует специальная функция в родительской теме, которая позволяет переносить функции из неё в дочернюю. Этот метод основан на условии, которое гласит: если функция не подключена, то её следует подключить.

Все доступные функции, которые вы хотите переопределить, должны начинаться с проверки на их подключение с использованием конструкции if ( ! function_exists. Вот как это обычно выглядит:

if ( ! function_exists( 'theme_name_more_link' ) ) :
   function theme_name_more_link() {
     $read_more = theme_name_get_option( 'read_more_text' );
      if ( '' !== $read_more || is_customize_preview() ) :
       ?>
         <a href="<?php echo esc_url( get_permalink() ) ?>" class="more-link"><?php echo esc_html( $read_more ); ?></a>
      <?php
endif;
}
endif;

Если необходимо внести изменения в данную функцию, следует скопировать содержимое условной функции.

function theme_name_more_link() {
   $read_more = theme_name_get_option( 'read_more_text' );
      if ( '' !== $read_more || is_customize_preview() ) :
       ?>
         <a href="<?php echo esc_url( get_permalink() ) ?>" class="more-link"><?php echo esc_html( $read_more ); ?></a>
       <?php
endif;
}

Затем вставьте этот код в файл function.php дочерней темы. Это позволит вам вносить изменения без опасения вызова ошибки.

к оглавлению ↑

Полезные функции для дочерней темы

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

Подключение стилей (CSS)

Для подключения пользовательских стилей вставьте следующий код в файл functions.php:

//Подлючение своих стилей из дечерней темы
function ws_custom_styles() {
    wp_enqueue_style('custom-styles', get_stylesheet_directory_uri() . '/custom.css');
}
add_action('wp_enqueue_scripts', 'ws_custom_styles');

Подключение скриптов (JavaScript)

Для включения пользовательских скриптов используйте следующий код:

//Подлючение своего скрипта из дечерней темы
function ws_enqueue_scripts() {
    wp_enqueue_script('custom-script', get_template_directory_uri() . '/js/custom.js', array('jquery'), '1.0', true);
}
add_action('wp_enqueue_scripts', 'ws_enqueue_scripts');

Импорт файлов

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

//Импорт файла из дечерней темы
require_once( get_stylesheet_directory() . '/file.php' );

к оглавлению ↑

Вывод изображения

Для вывода изображения на сайте вы можете использовать такой код:

//Вывод картинки из дочерней темы
<a href="#"><img src="<?php echo get_stylesheet_directory_uri() ?>/images/logo.png">Ссылка</a>

Заключение

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

2 комментария
  1. Полезная информация, а главное доходчиво, спасибо, воспользуюсь вашими знаниями

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *