В данной статье мы разберем некоторые ключевые моменты связанные с включением дополнительных возможностей к дочерней темы. Знание и понимание данных настроек поможет вам более широко использовать дочернюю тему без нанесения вреда родительской.
Дочерняя тема является темой, которая наследует функциональность и стиль в другой темы, родительской. Использование дочерних тем является рекомендованным методом для модификации существующей темы.
Зачем использовать дочернюю тему?
Есть несколько причин, почему вы хотели бы использовать дочернюю тему:
- Если вы измените тему, которой вы пользуетесь в данный момент, при выходе обновления темы ваши изменения могут быть удалены. При использовании темы дочерней вы можете быть уверены, что ваши изменения сохранятся.
- Использование дочерней темы может ускорить время разработки.
- Использование дочерней темы является отличным способом, узнать о развитии 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 файл к вашей дочерней теме содержащий:
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.