did_action() WP 2.1.0

Отримує число, скільки разів було викликано вказану подію (хук).

Функція отримує кількість викликів події, а чи не прикріплених до події функцій. Тобто. вона вважає виклики do_action() , а не add_action() .

Зазвичай, всі події викликаються один раз. Але до виклику може бути прикріплено декілька функцій. Не треба плутати цей момент. Зазвичай функція повертає або 0 чи 1.

Аналогічні функції:

  • current_filter() — отримує назву поточної події чи фільтра.
  • current_filter() .
  • doing_filter() — перевіряє чи обробляється в даний момент зазначений хук.
  • doing_filter() .
  • did_action() – отримує число, скільки разів спрацював вказаний хук.

Не працює з фільтрами, у WP 6.1 з’явилася функція did_filter().

1 раз – 0.0000001 сек
(швидкість світла) | 50000 разів – 0.0001 сек
(швидкість світла) |
PHP 7.4.8, WP 5.7

Хуків немає.

Повертає

int. Скільки разів була викликана вказана в $tag подія – скільки разів спрацював хук.

Використання

$num = did_action($tag);
$tag
(рядок) (обов’язковий)
Назва події (дії, хука), яка перевірятиметься.

Приклади

0

#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
0

#2 Зробимо щось, якщо вказаний хук ще жодного разу не спрацював.

if( did_action( 'hook_name' ) === 0 ){
	// хук 'hook_name' жодного разу не спрацював...
}
0

#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() 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 ];
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *