DID_ACTION() │ WP 2.1.0
Функция did_action() позволяет узнать, сколько раз сработал определённый экшен (или хук) в WordPress. Это полезно, если вы хотите отслеживать выполнение какого-либо действия.
Что делает функция?
Она возвращает количество раз, сколько срабатывает экшен, а не количество функций, прикрепленных к этому экшену. То есть, счётчик будет учитывать do_action(), а не add_action().
Похожие функции
- current_filter() — возвращает имя текущего фильтра или действия.
- current_action() — это синоним к
current_filter(). - doing_filter() — проверяет, обрабатывается ли указанный хук в данный момент.
- doing_action() — синоним к
doing_filter().
Важно! Функция did_action() не работает с фильтрами. В версии WordPress 6.1 появилась новая функция did_filter() для этой цели.
Скорость выполнения
- 1 срабатывание — 0.0000001 сек (скорость света)
- 50000 срабатываний — 0.0001 сек (скорость света)
- Примененные версии: PHP 7.4.8, WP 5.7
Возвращаемое значение
Функция возвращает целое число — количество срабатываний экшен-хука.
Использование
did_action( $hook_name );
Параметры
$hook_name(строка) (обязательный) — имя экшен-хука.
Примеры использования
Пример 1: БАЗОВЫЙ ПРИМЕР
// эта строка не влияет на результат did_action()
add_action( 'hook_name', '__return_true' );
echo did_action( 'hook_name' ); // > 0
do_action('hook_name'); // первое срабатывание
echo did_action( 'hook_name' ); // > 1
do_action('hook_name'); // второе срабатывание
echo did_action( 'hook_name' ); // > 2
Пример 2: ДЕЛАТЬ ЧТО-ТО, ЕСЛИ УКАЗАННЫЙ ХУК НИКОГДА НЕ СРАБОТАЛ
if( did_action('hook_name') === 0 ){
// хук 'hook_name' никогда не срабатывал ...
}
Пример 3: ДЕЛАТЬ ЧТО-ТО, ЕСЛИ УКАЗАННЫЙ ХУК СРАБОТАЛ ТОЛЬКО ОДИН РАЗ
Функцию did_action() можно использовать для того, чтобы выполнить что-то один раз, когда хук срабатывает в первый раз. Например, мы можем добавить пользовательское поле только во время первого вызова события:
function my_sticky_option(){
global $post;
if ( $post->post_type == 'films' && did_action( 'quick_edit_custom_box' ) === 1 ){
?>
Примечания
- Глобальная переменная:
$wp_actionsхранит количество раз, когда каждый экшен был вызван.
Изменения
- С версии 2.1.0: Функция была введена в WordPress.
Код функции
Функция did_action реализована следующим образом:
function did_action( $hook_name ) {
global $wp_actions;
if ( ! isset( $wp_actions[ $hook_name ] ) ) {
return 0;
}
return $wp_actions[ $hook_name ];
}
Связанные функции
ЭКШЕНЫ (ХУКИ)
- add_action() — добавляет обработчик для экшена.
- do_action() — вызывает все функции, прикреплённые к экшену.
- do_action_ref_array() — вызывает все функции, прикреплённые к экшену, с передачей массива аргументов.
- doing_action() — проверяет, выполняется ли данный экшен в текущий момент.
- has_action() — проверяет, есть ли обработчик для данного экшена.
- remove_action() — удаляет обработчик для экшена.
- remove_all_actions() — удаляет все обработчики для экшена.
ХУКИ (ЭКШЕНЫ, ФИЛЬТРЫ)
- add_filter() — добавляет обработчик для фильтра.
- apply_filters() — применяет все функции, прикреплённые к фильтрам.
- apply_filters_ref_array() — применяет все функции фильтра с передачей массива аргументов.
- current_filter() — возвращает имя текущего фильтра.
- doing_filter() — проверяет, выполняется ли данный фильтр в текущий момент.
- has_filter() — проверяет, есть ли обработчик для данного фильтра.
- remove_all_filters() — удаляет все обработчики для фильтра.
- remove_filter() — удаляет обработчик для фильтра.