did_action und did_filter zählen nicht, wie oft sie ausgeführt wurden
Veröffentlicht: – 2 Kommentare
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.
Sehr elegant! 😊 Und wie erschreckend waren die Zahlen? 😂
Zum Glück gar nicht, weil es bei mir um einen eigenes hinzugefügten Filter ging. 🙃