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

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

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

Есть несколько причин, почему вы хотели бы использовать дочернюю тему:

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

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

Использование файлов шаблона при создании дочерней темы.

Если вы хотите изменить больше, чем просто стиль, ваша дочерняя тема может переопределить любой файл в родительской теме: просто включить файл с таким же именем в каталоге ребенка, и она будет переопределять эквивалентный файл в каталоге родителя, когда это будет происходить загрузка вашего сайта. Например, если вы хотите изменить код PHP для заголовка сайта, вы можете включить в каталог header.php вашей дочерней темы, и этот файл будет использоваться вместо header.php родительского.

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

Использование functions.php в дочерней теме

В отличие от style.css, functions.php из темы ребенка не переопределяет своего коллегу из родительской темы. Вместо этого, он загружается в дополнение к functions.php родителя. (В частности, он загружается прямо перед родительским файлом.)

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

Структура functions.php проста: открывающий тег PHP в верхней части, и под ним, ваши функции PHP. В файле вы можете поставить столько функций, сколько вы хотите. Пример ниже показывает элементарный functions.php файл, который делает одну простую вещь — добавляет ссылку FavIcon в голову элемента HTML-страницы.

<PHP // Открытие PHP скрипта - ничего не должно быть до этого, даже пробелов // Включаем пользовательскую функцию function favicon_link () {     echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' . "\n"; }  add_action ('wp_head', 'favicon_link');

Полезные советы для разработчиков: Тот факт, что файл functions.php дочерней темы загружается в первую очередь означает, что вы можете сделать пользовательские функции связанные с подключаемыми в родителе, то есть, по переменным ребенка theme-, объявив их условно. Например:

if ( ! function_exists( 'theme_special_nav' ) ) {     function theme_special_nav() {         //  Do something.     } }

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

Ссылки/включение файлов в дочернюю тему

Когда вам нужно включить файлы, которые находятся в пределах структуры каталогов вашей дочерней темы, вам нужно будет использовать get_stylesheet_directory (). Так style.css родительского шаблона замещается style.css вашей дочерней темы, который размещается  в корне директории вашей темы ребенка; get_stylesheet_directory () указывает на каталог вашей дочерней темы, а не каталога родительской.

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

require_once (get_stylesheet_directory () '/my_included_file.php.); 

Полезная информация по использованию дочерней темы

Использование почтовых форматов

Ребенок наследует тему почтовых форматов, определенных в родительском теме. При создании дочерних темы, нужно знать , что с помощью функции add_theme_support (‘post-formats’) будет переопределять форматы, определенные родительской темой.

Поддержка RTL

Для поддержки языков RTL нужно добавить rtl.css файл к вашей дочерней теме содержащий:

Theme Name: Twenty Fourteen Child // название дочерней темы
Template: twentyfourteen // название папки с шаблонами
*/
rtl.css загружается только, если функция is_rtl () возвращает истину.
Рекомендуется добавить файл rtl.css для вашей дочерней темы, даже если родитель не имеет rtl.css файл.

Интернационализация дочерней темы

Детские темы, как и другие расширения, могут быть переведены на другие языки с помощью Gettext функции.

Для интернационализации дочерней темы выполните следующие действия:

  • Добавить каталог языка.
    • Что-то вроде моей my-theme/languages/.
  • Добавить языковые файлы.
    • Ваши имена должны быть he_IL.po & he_IL.mo (в зависимости от языка), в отличие от файлов плагина, которые имеют формат domain-he_IL.xx.
  • Загрузка языка домена.
    • Используйте load_child_theme_textdomain () в functions.php в течении after_setup_theme действия.
    • Текст домена, определенный в load_child_theme_textdomain () следует использовать, чтобы перевести все строки в дочерней теме.
  • Используйте функции GetText, что бы добавить i18n поддержку для строк.

Пример textdomain:

<?php /** * Setup My Child Theme’s textdomain. * * Declare textdomain for this child theme. * Translations can be filed in the /languages/ directory. */ function my_child_theme_setup() { load_child_theme_textdomain( ‘my-child-theme’, get_stylesheet_directory() . ‘/languages’ ); } add_action( ‘after_setup_theme’, ‘my_child_theme_setup’ ); ?>

Пример gettext functions

<?php _e( ‘Code is Poetry’, ‘my-child-theme’ ); ?>

Чтобы подвести итог, все строки, которые используют “my-child-theme” будет переведено. Файл перевода должен находиться в “/languages/” каталоге.

Источник: WordPress.org.

Рекомендую почитать: