Проверка зарегистрированных действий с помощью функции has_action()

# HAS_ACTION() │ WP 2.5.0

Функция has_action() проверяет, зарегистрированы ли какие-либо действия для определённого хуку (hook).

Когда вы используете аргумент $callback, эта функция может вернуть неопределённое значение, которое интерпретируется как "ложное" (например, 0). Поэтому для проверки возвращаемого значения рекомендуется использовать оператор ===.

**Время выполнения:**
- 1 раз — 0.000016 сек (очень быстро)
- 50000 раз — 0.03 сек (практически мгновенно)

## Результат (RETURN)

- **true|false|Int.** Если $callback не указан, функция вернёт булево значение, указывающее, есть ли зарегистрированные действия для данного хука. При проверке конкретной функции вернётся приоритет данного хука или false, если функция не прикреплена.

## Использование (USAGE)

```php
has_action( $hook_name, $callback );
  • $hook_name (string) (обязательный): Название действия (hook).
  • $callback (callable|string|array|false): Функция, которую нужно проверить. Эта функция может быть вызвана без условий, чтобы проверить, существует ли данный callback или нет.
  • По умолчанию: false

Примеры (EXAMPLES)

Пример 1: Проверка, имеет ли событие init хуки

if( has_action( 'init' ) ){
    echo 'Действие init имеет хотя бы одну прикреплённую функцию';
}

Пример 2: Проверка, имеет ли событие init конкретную функцию

$priority = has_action( 'init', 'my_function' );

if( $priority ){
    echo "Хук init имеет my_function() с приоритетом $priority";
}

Заметки (NOTES)

  • Замечание: Функция has_action() является синонимом has_filter().

Изменения (CHANGELOG)

  • С версии 2.5.0: Введена.

Код HAS_ACTION в WP 6.7.2

function has_action( $hook_name, $callback = false ) {
    return has_filter( $hook_name, $callback );
}

Связанные функции (RELATED FUNCTIONS)

Действия (HOOKS)

Хуки (FILTERS)

Статья создана с использованием структуры и формата Markdown, чтобы обеспечить легкость восприятия для пользователей WordPress любого уровня подготовки.

Leave a Reply

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