# Функция ADD_ACTION() │ WP 1.2.0
Функция add_action() связывает вашу функцию с конкретным действием в WordPress.
## Что такое действия и хуки?
Действия — это хуки (или условия), которые WordPress запускает в определенные моменты во время работы, или когда происходят конкретные события. Плагины могут указывать, что одна или несколько их функций должны выполняться в эти моменты, используя API действий.
В отличие от фильтров, действия выполняют какое-то действие в определенный момент времени. Фильтры, наоборот, передают данные и возвращают их обратно в код.
В кратце:
- **Действия (Actions)** — используются для выполнения какого-то действия.
- **Фильтры (Filters)** — используются для изменения данных.
## Синтаксис функции
```php
add_action( $hook_name, $callback, $priority, $accepted_args );
Где:
- $hook_name (string) (обязательный): имя действия, к которому добавляется функция.
- $callback (callable) (обязательный): функция, которая будет выполнена при вызове действия.
- $priority (int): порядок выполнения функций. Меньшие числа выполняются раньше. По умолчанию — 10.
- $accepted_args (int): количество аргументов, которое функция принимает. По умолчанию — 1.
Примеры использования
Пример 1: Получение аргумента
Функция do_action() передает аргумент в функцию, и его можно использовать:
add_action( 'comment_id_not_found', 'echo_comment_id' );
function echo_comment_id( $comment_ID ) {
echo "Я только что получил ID комментария: " . $comment_ID;
}
Пример 2: Базовый пример
Давайте отправим email друзьям, когда публикуется новый пост:
add_action( 'publish_post', 'email_friends' );
function email_friends( $post_ID ) {
$friends = 'example1@example.com, example2@example.com';
wp_mail( $friends, "Блог Салли обновлён", 'Я только что добавил что-то на свой блог: http://blog.example.com' );
}
Пример 3: Анонимная функция
Анонимная функция может быть использована как коллбэк:
add_action( 'wp_head', function() {
echo 'что-то';
});
Пример 4: Добавление действия из класса PHP
Если вы хотите использовать метод класса в качестве действия, вы должны указать массив вместо имени функции:
// Подключение метода класса вне класса
add_action( 'wp_head', array( 'MyClass', 'my_static_method' ) );
class MyClass {
public function __construct() {
add_action( 'save_post', array( $this, 'my_public_method' ) );
add_action( 'save_post', array( __CLASS__, 'my_static_method' ) );
}
public function my_public_method( $post_id ) {
// код
}
static function my_static_method( $post_id ) {
// код
}
}
Как узнать число и имя аргументов
Чтобы узнать, какие аргументы принимает функция, просто найдите соответствующий вызов do_action(). Например, если вы используете save_post, найдите его в файле post.php:
do_action( 'save_post', $post_ID, $post, $update );
Тогда ваш вызов add_action будет выглядеть так:
add_action( 'save_post', 'my_save_post', 10, 3 );
function my_save_post( $post_ID, $post, $update ) {
// функция принимает 3 аргумента
// код
}
Изменения
- С версии 1.2.0 — функция была введена в WordPress.
Код функции ADD_ACTION
function add_action( $hook_name, $callback, $priority = 10, $accepted_args = 1 ) {
return add_filter( $hook_name, $callback, $priority, $accepted_args );
}
Связанные функции
did_action()do_action()remove_action()add_filter()