Понимание сущности двух ключевых функций - add_action и do_action - является фундаментальным для разработки проектов на WordPress, поскольку именно они составляют основу архитектуры написания и вывода кода на этой платформе.
В WordPress существует мощная система хуков, позволяющая разработчикам добавлять и изменять функциональность без редактирования основного кода. Именно эти две ключевые функции в этой системе и решают эти задачи.
Что такое add_action?
add_action
- это функция, которая связывает вашу пользовательскую функцию с определённым хуком в WordPress. Она используется, когда вы хотите, чтобы ваша функция срабатывала в определённый момент жизненного цикла WordPress, например, при загрузке страницы или сохранении поста.
Пример использования add_action:
function my_custom_message() {
echo 'Это мое пользовательское сообщение!';
}
add_action( 'wp_footer', 'my_custom_message' );
В этом примере мы создаем функцию my_custom_message
, которая выводит сообщение. Затем мы связываем эту функцию с хуком wp_footer
, чтобы она выполнялась в нижней части страницы.
Что такое do_action?
do_action
— это функция, которая вызывает все функции, зарегистрированные к определённому хуку с помощью add_action
. Вы используете эту функцию в том месте, где хотите инициировать выполнение всех связанных с хуком функций.
Пример использования do_action:
function another_function() {
echo 'Это другая функция!';
}
// Добавляем ее к нашему хуку.
add_action( 'my_custom_hook', 'another_function' );
// Вызываем наш собственный хук.
do_action( 'my_custom_hook' );
В этом примере мы добавляем функцию another_function
к собственному хуку my_custom_hook
. Затем, когда мы вызываем do_action( 'my_custom_hook' )
, WordPress выполнит все функции, связанные с этим хуком.
Полный код примера
Теперь давайте объединим всё в одном примере, который можно поместить в файл functions.php
вашей темы WordPress:
// 1. Определяем функцию, которая будет вызываться через wp_footer.
function my_custom_message() {
echo 'Это мое пользовательское сообщение!';
}
// 2. Добавляем эту функцию к хуку wp_footer.
add_action( 'wp_footer', 'my_custom_message' );
// 3. Определяем другую функцию.
function another_function() {
echo 'Это другая функция!';
}
// 4. Добавляем эту функцию к собственному хуку my_custom_hook.
add_action( 'my_custom_hook', 'another_function' );
// 5. Вызываем наш собственный хук, чтобы вывести сообщение.
do_action( 'my_custom_hook' );
Как это работает?
Когда вы загружаете страницу, WordPress выполняет следующие шаги:
- При достижении
wp_footer
он выполнит функциюmy_custom_message
, выводя сообщение:'Это мое пользовательское сообщение!'
. - В любом месте кода, где вы вызовете
do_action( 'my_custom_hook' )
, WordPress выполнит все функции, добавленные к этому хуку, включаяanother_function
, выводя:'Это другая функция!'
.
Принципиальное отличе этих двух сущностей - do_action и хуки
do_action — это функция, которая вызывает все функции, зарегистрированные на определённый хук. Она сама по себе не является хуком; скорее, она используется для инициирования выполнения функций, привязанных к хуку.
Хук, о котором идет речь, — это название, которое вы передаете как строку (например, 'wp_footer' или 'my_custom_hook'). Это и есть сам хук, и именно это имя ключевое, когда вы используете функции add_action и do_action.
Сравнение:
do_action('my_custom_hook'): Это вызов, который означает: "Выполни все функции, которые были добавлены к хуку с именем 'my_custom_hook'."
add_action('my_custom_hook', 'my_function'): Это добавление функции 'my_function' к хуку с именем 'my_custom_hook'. Здесь 'my_custom_hook' — это сам хук.
Другими словами:
Создание хука: Когда вы пишете add_action('my_custom_hook', 'my_function'), вы создаете связь между хуком 'my_custom_hook' и функцией 'my_function'.
Вызов хука: Когда вы пишете do_action('my_custom_hook'), вы вызываете все функции, которые были связаны с этим хуком. То есть если где-то была добавлена функция к хуку 'my_custom_hook', она будет выполнена, когда вы вызовете do_action.
То есть:
do_action — это функция для вызова (проведения) всех функций, привязанных к определенному хуку.
Хук — это название точки расширяемости в WordPress, к которой можно привязать функции.
Использование add_action
и do_action
позволяет разработчикам создавать гибкие и расширяемые решения в темах и плагинах WordPress. Это мощные инструменты, которые позволяют добавлять функциональность и изменять поведение без необходимости редактировать исходный код.