Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Добавление Функций к Фреймворку Вашей WordPress Темы

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called How Theme Frameworks Actually Work.
Adding Action Hooks to Your WordPress Theme Framework
Adding Filter Hooks to Your WordPress Theme Framework

Russian (Pусский) translation by Narine Hovhannisyan (you can also view the original English article)

В последней части этой серии вы добавили некоторые хуки-действия к фреймворку вашей темы. В этом уроке вы напишите некоторые функции, которые вы активируете с помощью этих хуков.

Если вы работали с примером кода, то в вашем фреймворке сейчас есть шесть хуков-действий:

  • wptp_in_header, который находится на правой стороне header
  • wptp_before_content, который находится до цикла
  • wptp_after_content, который идет сразу после цикла
  • wptp_sidebar, который находится в sidebar.php
  • wptp_footer, который находится внутри элемента footer
  • wptp_after_footer, который находится после элемента footer.

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

Что Вам Понадобится

Для этого урока вам понадобится:

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

Добавление Виджет-Зон с Помощью Функции

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

Создание Файла Include для Виджет-Зон

Поскольку виджет-зоны добавляются с помощью функциий, вам не нужно скодировать их в соответсвующие файлы шаблонов. Вы можете добавить их к вашему файлу functions.php, но для управления кодом, я собираюсь добавить файл include с кодом для виджет-зон.

Создайте папку под названием includes в папке вашей темы, внутри нее создайте файл под названием widgets.php. Сохраните файл.

Теперь окройте ваш файл functions.php и добавьте этот код до следующих функций:

Это эффективно включает контенты файла widgets.php на этом месте в файле функций.

Теперь сохраните ваш файл функций.

Виджет-Зона в Header

Для начала давайте добавим виджет-зону в header. Откройте ваш новый файл widgets.phpи добавьте это:

Функция wptp_in_header_widget_area() добавляет код для виджет-зоны в правильном месте. Сначала, она проверяет, если виджет зона заполнена виджетами, используя if( is_active_sidebar), затем, если это так, то она выводит виджет в элемент aside.

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

Сделав это, будет означать, что, если вы захотите удалить виджет-зону для сайта, работающего на дочерней теме, вы сможете сделать это, используя remove_action(), вот так:

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

Вы можете узнать больше о функции add_action() в Кодексе WordPress.

Виджет-Зона в Боковой Панели

Следующий шаг - это добавление виджет-зоны в боковой панели, используя похожий код, который вы также добавляете к вашему файлуwidgets.php:

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

Виджет-Зона в Footer

Наконец, добавим виджет в footer. Я собираюсь добавить четыре виджет-зоны - вы, возможно, захотите добавить меньше, если ваш фреймворк требует столько. Мои виджет-зоны используют классы, которые используют преимущества объектно-ориентированного CSS в моей теме.

Опять, в widgets.php, добавьте следующее:

Это добавит четыре виджет-зоны внутри элемента aside с классом fatfooter в моей теме, что используется для стиля, это означает, что фон в полную ширину может быть применен к элементу footer в то время, как элемент aside.fatfooter может быть расположен по центру экрана.

После добавления виджет-зон вы можете увидеть, как сейчас выглядит моя страница:

Добавление Функции для Колофона

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

Так как это не виджет, я собираюсь добавить код к моему файлу functions.php:

Это добавит элемент section, содержащий код для колофона. Теперь вы сможете увидеть колофон в моем сайте:

Как вы видите, по умолчанию текстом для ссылки copyright является название сайта. Если я захочу его поменять в дочерней теме, я с легкостью смогу это сделать с помощью создания новой функции, прикрепленной к хуку-действию wptp_after_footer, и удаления исходной функции, используя remove_action():

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

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

Заметьте, что в этом случае наилучшим решением нацелиться на текст в ссылке copyright будет взятие этого кода внутрь хука-фильтра. Мы рассмотрим это в следующей части этой серии.

Заключение

Теперь у фреймворка вашей WordPress темы есть некоторые функции. В этом уроке я показала вам, как использовать хуки-действия, которые вы создали ранее для активации функций, которые вы добавляете в файле functions.php или в файле include, который вы создали в вашей теме.

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

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

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

В следующей части этой серии вы научитесь добавлять хуки-фильтры к вашему фреймворку.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.