Функция ADD_ACTION(): Связывание функции с действием в WordPress

# Функция 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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *