WordPress — популярная система управления контентом (CMS), которая поддерживает более 40% веб-сайтов в Интернете. Одной из наиболее важных особенностей WordPress является его способность изменять основную функциональность платформы с помощью хуков.

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

Хуки бывают двух видов: действия и фильтры. Действия — это события, запускаемые WordPress, в то время как фильтры изменяют данные в WordPress. Действия и фильтры выполняются в определенном порядке, что позволяет разработчикам контролировать процесс выполнения и изменять данные по мере необходимости.

Зачем нужны хуки

С помощью хуков в WordPress можно:

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

Как работать с хуками

Чтобы работать с хуками в WordPress, необходимо понимать два типа хуков: действия и фильтры. Действия — это события, запускаемые WordPress, например, при публикации поста или при входе пользователя в систему. Фильтры, с другой стороны, используются для изменения данных в WordPress, например, путем изменения текста поста или URL изображения.

Разработчики могут добавлять свой собственный пользовательский код в хуки, используя функции add_action() и add_filter(). Эти функции позволяют разработчикам указывать имя перехватчика, к которому они хотят добавить свой код, а также имя функции, которая должна выполняться при срабатывании перехватчика.

Например, чтобы добавить пользовательский код к действию wp_head, можно использовать следующий код:

function my_custom_function() {
    // Add custom code here
}
add_action( 'wp_head', 'my_custom_function' );

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

function my_custom_filter( $text ) {
    // Modify the text here
    return $text;
}
add_filter( 'the_content', 'my_custom_filter' );

Дополнительные хуки

В дополнение к add_action() и add_filter(), есть несколько других функций, которые разработчики могут использовать для работы с хуками в WordPress.

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

Пример remove_action():

function my_custom_function() {
    // Add custom code here
}
add_action( 'wp_head', 'my_custom_function' );

// Remove the 'wp_head' action
remove_action( 'wp_head', 'my_custom_function' );

Пример remove_filter():

function my_custom_filter( $text ) {
    // Modify the text here
    return $text;
}
add_filter( 'the_content', 'my_custom_filter' );

// Remove the 'the_content' filter
remove_filter( 'the_content', 'my_custom_filter' );

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

// Trigger the 'my_custom_action' action
do_action( 'my_custom_action' );

// Trigger the 'my_custom_filter' filter
$modified_text = apply_filters( 'my_custom_filter', $text );

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

Вот несколько примеров основных хуков в WordPress:

  • wp_enqueue_scripts: запускается во внешнем интерфейсе, когда скрипты и стили ставятся в очередь.
  • admin_enqueue_scripts: запускается в области администрирования, когда скрипты и стили ставятся в очередь.
  • the_content: фильтр, используемый для изменения содержимого записи или страницы.
  • wp_head: действие, используемое для добавления содержимого в раздел <head> веб-страницы.