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 ]; }