Es gibt zwar eine did_action und ein did_filter, um zu erkennen, wie oft eine Action oder ein Filter aufgerufen wurden, aber sie funktionieren anders als du möglicherweise denkst. Beide arbeiten ähnlich und zählen nur, wie oft do_action oder apply_filters ausgeführt wurden. Sie prüfen nicht, wie oft sie tatsächlich verwendet wurden.

Da ich aber solch eine Prüfung benötigte, wie oft der Filter tatsächlich durch ein add_action oder ein add_filter verwendet wurden, entwickelte ich meine eigene Lösung:

/**
 * Add check whether a filter has been executed.
 * \did_filter() of WordPress only counts the times \apply_filters() has been executed
 * and not the actual times it has been used by \add_filter().
 *
 * @param	string	$hook_name The name of the filter hook
 * @return	integer The number of times the filter hook has been run
 */
function my_did_filter( string $hook_name ): int {
	global $wp_filter;
	
	if ( ! isset( $wp_filter[ $hook_name ] ) || ! isset( $wp_filter[ $hook_name ]->callbacks ) ) {
		return 0;
	}
	
	return count( $wp_filter[ $hook_name ]->callbacks );
}
Code-Sprache: PHP (php)

Wenn du nur eine Prüfung benötigst, ob eine Action oder ein Filter überhaupt verwendet wurden, gibt es dafür doing_action und doing_filter direkt in WordPress.

2 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert