did_action()
Отримує число, скільки разів було викликано вказану подію (хук).
Функція отримує кількість викликів події, а чи не прикріплених до події функцій. Тобто. вона вважає виклики do_action() , а не add_action() .
Зазвичай, всі події викликаються один раз. Але до виклику може бути прикріплено декілька функцій. Не треба плутати цей момент. Зазвичай функція повертає або 0 чи 1.
Аналогічні функції:
- current_filter() — отримує назву поточної події чи фільтра.
- current_filter() .
- doing_filter() — перевіряє чи обробляється в даний момент зазначений хук.
- doing_filter() .
- did_action() – отримує число, скільки разів спрацював вказаний хук.
Не працює з фільтрами, у WP 6.1 з’явилася функція did_filter().
(швидкість світла) | 50000 разів – 0.0001 сек
(швидкість світла) |
PHP 7.4.8, WP 5.7
Хуків немає.
Повертає
int. Скільки разів була викликана вказана в $tag подія – скільки разів спрацював хук.
Використання
$num = did_action($tag);
- $tag
(рядок) (обов’язковий) - Назва події (дії, хука), яка перевірятиметься.
Приклади
#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() можна використовувати, щоб зробити щось тільки 1 раз, коли подія відбувається вперше (хук спрацьовує вперше). Використовуємо did_action(), щоб переконатися, що довільне поле було додано лише під час першого виклику події (подія може викликатися кілька разів). Всі наступні виклики події функція нічого не робитиме:
<?php
function my_sticky_option(){
global $post;
// Якщо це довільний тип посту 'films' і хук quick_edit_custom_box виконується вперше
if ( $post->post_type == 'films' && did_action( 'quick_edit_custom_box' ) === 1 ){
?>
<fieldset class="inline-edit-col-right">
<div class="inline-edit-col">
<label class="alignleft">
<input type="checkbox" name="sticky" value="sticky" />
<span class="checkbox-title">
<?php _e( 'Featured (sticky)', 'textdomain_string' ); ?>
</span>
</label>
</div>
</fieldset>
<?php
} // endif;
}
// додаємо налаштування sticky у полі швидкого редагування нового типу постів.
add_action( 'quick_edit_custom_box', 'my_sticky_option');
нотатки
- Global. int[]. $wp_actions Stores number of times each action був triggered.
список змін
| З версії 2.1.0 | Введено. |
Код did_action() did action WP 6.0.2
function did_action( $hook_name ) {
global $wp_actions;
if ( ! isset ( $wp_actions [ $ hook_name ] ) ) {
return 0;
}
return $wp_actions[ $hook_name ];
}