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

Um auf deiner eigenen Website zu antworten, gib die URL deiner Antwort ein, die einen Link zur Permalink-URL dieses Beitrags enthalten sollte. Deine Antwort wird dann (möglicherweise nach der Moderation) auf dieser Seite erscheinen. Möchtest du deine Antwort aktualisieren oder entfernen? Aktualisiere oder lösche deinen Beitrag und gib die URL deines Beitrags noch einmal ein. (Mehr über die Funktion von Webmentions erfahren)