Все, что вам нужно знать о хуках WordPress
Опубликовано: 2015-07-11Подсели на хуки WordPress?
Под капотом происходит много всего, поскольку WordPress работает над отображением необходимого компонента для вашего веб-сайта. Каждая страница состоит из нескольких функций и запросов к базе данных. Ядро WordPress и тема работают вместе для вывода текста, изображений, таблиц стилей и других файлов. С помощью браузера все эти части интерпретируются и объединяются в одну веб-страницу. Хуки дают возможность настраивать, расширять и улучшать WordPress.
Хуки названы соответствующим образом, потому что мы можем буквально «подключиться» к WordPress для извлечения, вставки или изменения данных или выполнения других задач за кулисами. В некотором смысле мы «подвешиваем» наш пользовательский код на эти крючки. Как мы знаем, модифицировать ядро WordPress — не лучшая идея. Из-за этого хуки действий и хуки фильтров в WordPress — лучший способ изменить существующую или создать новую функциональность.
Типы крючков
Крючки являются необходимой частью при настройке. Есть два основных типа хуков: хуки действия и хуки фильтра. Каждый предлагает что-то свое, поэтому важно понимать, когда какой из них использовать.
Крюк нельзя просто бросить где попало; должно быть что-то, за что можно «зацепиться». Необходимо иметь эту точку исполнения для этого хука. Хорошая новость заключается в том, что в ядре WordPress есть встроенные хуки, на которые можно ссылаться.

Зачем использовать крючки
С помощью хуков можно многое изменить, потому что многие основные функции WordPress используют действия и фильтры. Понимание хуков абсолютно необходимо для всех, кто работает с WordPress, а также для дизайнеров, которые хотят изменить WordPress или поведение темы.
Хуки действия
Хуки действия указывают на то, что что-то произошло, не путать с самими событиями. Действия запускаются определенными событиями, происходящими в WordPress. Примером события может быть публикация поста, изменение темы или активация плагина. Действия позволяют добавить дополнительную функциональность в определенный момент обработки страницы. Хуки действий могут делать такие вещи, как:
- Изменить данные в базе данных WordPress
- Изменить то, что отображается в браузере
- Отправить электронное письмо, когда событие произошло
- Добавьте виджет, меню или пользовательское сообщение на страницу

Пример хука действия
add_action( $hook, $function_to_add, $priority, $accepted_args );
Обязательными параметрами функции add_action являются хук и функция для добавления. Включение приоритета необязательно. Целочисленное значение, основанное на шкале от 1 до 999, определяет порядок приоритета функций для этого конкретного хука. Вам это может не понадобиться, но последний параметр используется, когда вам нужно передать или принять несколько аргументов.
Давайте взглянем на основной хук действия:
// This is the function, name it accordingly
function custom_welcome_text() { ?>
<div class="optional-custom-class">Hello WordPress!</div>
<?php }
// Action function that outputs the function above into the theme hook
add_action( 'welcome_hook', 'custom_welcome_text', 5 );
Этот базовый хук добавит «Hello WordPress» вверху страницы. Он имеет приоритет 5. Меньшие числа соответствуют более раннему выполнению. По умолчанию установлено значение 10, поэтому этот пример выполняется раньше значения по умолчанию.

Хуки фильтра
Давайте рассмотрим распространенный сценарий и то, как в игру вступают перехватчики фильтров. Подумайте обо всех случаях, когда ваши пользователи посещают ваш сайт, и пост загружается для прочтения. Как часть жизненного цикла страницы WordPress, WordPress запрашивает эту запись в базе данных, затем она возвращается в браузер, готовая для чтения пользователем. Все это звучит просто, но прежде чем контент будет предоставлен, WordPress пропускает данные через все установленные фильтры. Эти хуки-фильтры можно легко создать, когда это необходимо.
Подумайте об этом так: действия запускаются определенными событиями, но фильтры позволяют перехватывать и изменять данные по мере их обработки. Перехватчики фильтров используются, когда вам нужно перехватывать, управлять или возвращать данные перед их отображением в браузере или сохранением данных из браузера в базу данных. Например, вы можете захотеть вставить другой класс CSS в HTML-элемент WordPress или зарегистрировать дополнительные типы метаполей. Оба они могут быть выполнены с фильтрующим хуком.

Фильтры располагаются между базой данных и браузером, поскольку WordPress генерирует страницы. Кроме того, они находятся между браузером и базой данных, поскольку WordPress добавляет в базу данных новые сообщения и комментарии. Из-за этого перехватчики фильтров могут делать такие полезные вещи, как:
- Добавить данные в базу данных или отправить на экран браузера
- Манипулировать данными, поступающими из базы данных, до того, как они попадут в браузер, или данными, поступающими из браузера, до того, как они попадут в базу данных.
Пример хука фильтра
В приведенном ниже примере мы рассмотрим, как хук-фильтр работает с контентом. Этот хук запускается непосредственно перед тем, как содержимое будет использовано, помещено в базу данных или обработано WordPress для просмотра на экране. Это изменяет данные при срабатывании хука фильтра.
Функция add_filter — это то, что нам нужно для подключения к фильтру. Аргументы могут показаться вам знакомыми, add_filter такой же, как и у add_action . Давайте теперь подключимся к фильтру WordPress the_content, который вызывается перед отображением любого содержимого записи. В этом простом примере фильтр позволит нам добавлять примечание об авторских правах к каждому сообщению. На этом этапе фильтры будут действовать в отношении данных, которые им передаются.
add_filter( 'the_content', 'add_copyright_notice' );
function add_copyright_notice( $content )
{
return $content . " <br>This content is copyrighted.";
}
Обратите внимание: когда вы используете фильтр, вы всегда должны что-то возвращать, иначе что-то сломается.
Добавление хуков в тему
Добавляя хуки и фильтры в тему, убедитесь, что вы работаете в дочерней теме. Основная причина в том, что если вы работаете в родительской теме, эти модификации могут быть перезаписаны при обновлении файлов темы.
Надеюсь, вы лучше понимаете хуки, что они могут делать и как они могут помочь. Крючки могут быть очень простыми, очень сложными или чем-то средним. Как только вы освоите базовые концепции, вы сразу же зацепитесь.
