Статьи

Добавление хуков действий в ваш WordPress Theme Framework

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

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

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

Чтобы следовать этому уроку, вам понадобится:

  • установка для разработки WordPress
  • свою собственную тему или файлы тем из Части 3 этой серии, которые вы можете найти в репозитории GitHub для сопровождения серии
  • редактор кода

Мы собираемся добавить два хука в заголовок: один перед ним и один внутри него.

В header.php , непосредственно внутри открывающего <body> , добавьте первый хук действия:

1
2
3
4
<?php
// action hook for any content placed before the header, including the widget area
do_action ( ‘wptp_before_header’ );
?>

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

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

1
2
3
4
5
6
7
8
<div class=»half right»>
    <!— This area is by default in the top right of the header.
 
    <?php
    // action hook for any content placed inside the right hand header, including the widget area.
    do_action ( ‘wptp_in_header’ );
    ?>
</div> <!— .half right —>

Обратите внимание, что я заключил этот хук в div с парой классов, которые работают с объектно-ориентированным стилем в моей теме — если вы работаете со своей собственной темой, вам нужно использовать что-то другое, но сам хук будет таким же.

Тема будет содержать два хука контента — один перед циклом и открытый после него, оба внутри #content div . К счастью, из-за того, как моя тема структурирована, мне нужно добавить каждый хук только один раз, так как я открываю этот div в файле header.php и закрываю его в sidebar.php и page-full-width.php — он добавляется в шаблон страницы полной ширины, потому что это не вызывает боковую панель.

Давайте начнем с того, что перед циклом.

В конце header.php добавьте следующее прямо внутри открывающего #content div:

1
2
3
4
<?php
// action hook for any content placed before the content, including the widget area
do_action ( ‘wptp_before_content’ );
?>

Это обеспечит ловушку для всего внутри области содержимого, но выше цикла.

Затем в sidebar.php , перед закрытием #content div, добавьте этот код:

1
2
3
4
<?php
// action hook for any content placed after the content, including the widget area
do_action ( ‘wptp_after_content’ );
?>

Наконец, добавьте тот же код в шаблон page-full-width.php который вы только что сделали в sidebar.php , опять же перед закрытием #content div.

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

Замените весь код для области виджетов новым хуком:

1
2
3
4
<?php
// action hook for any content placed in the sidebar, including the widget area
do_action ( ‘wptp_sidebar’ );
?>

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

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

Внутри элемента footer замените весь существующий код хуком:

1
2
3
4
<?php
// action hook for any content placed before the content, including the widget area
do_action ( ‘wptp_footer’ );
?>

Затем добавьте еще один хук для колофона после закрытия элемента footer :

1
2
3
4
<?php
// action hook for any content placed before the content, including the widget area
do_action ( ‘wptp_after_footer’ );
?>

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

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

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