0

I would like to output all apply_filters and do_action to give the user an overview of them.

If I use the Code

add_filter( 'wpErpOs_testFilter', 'wpErpOs_testFilter_callback', 10, 1 );
function wpErpOs_testFilter_callback( $testVar ) {
$testVar[] = "GM";
 return $testVar;
}
$testVar = array("VW", "Audi");
$testVar = apply_filters('wpErpOs_testFilter', $testVar);

then the hooks are displayed in

global $wp_filter;. 

If apply_filters is not called by add_filter, it does not appear in

global $wp_filter;;

How can I output all apply_filters and do_action, even those that are not called?

  • What do you mean by "How can I output all apply_filters"? Do you want to display all hooks? Or all registered filters/actions assigned to any hook? – Krzysiek Dróżdż Feb 21 at 19:39
  • I'd like to spend all the names of the hooks. Example: apply_filters('wpErpOs_testFilter', $testVar); ==> Name: wpErpOs_testFilter – Severin Feb 22 at 12:23
3

apply_filters and do_action are NOT stored in $wp_filter, ONLY add_filter and add_action are stored in $wp_filter

When you call apply_filters or do_action, core WordPress loops through all of the registered filters or actions (added by add_filter and add_action), looking for any matching ones, and then executes the associated function.

The only difference being actions which are stored in the $wp_actions global var

These are the global vars available for hooks (actions/filters):

global $wp_filter, $wp_actions, $wp_current_filter;

$wp_actions - stores actions that have already been fired with the number of times it was fired, each time do_action is called this number is incremented.

You can look at the Query Monitor plugin which does handle tracking of hooks (actions/filters): https://github.com/johnbillion/query-monitor

Now with that said, one option you have that you can do, is to add your own action for the all action, and then collect and save the filters/actions that are ran yourself.

Here's some sites that talk about this: https://www.smashingmagazine.com/2012/02/inside-wordpress-actions-filters/

Here's example code of doing this: https://gist.github.com/bueltge/1000143

https://developer.wordpress.org/plugins/hooks/advanced-topics/#debugging-with-the-all-hook

  • Tracing via the "all" hook only works for hooks called with add_filter() or add_action(). Did I understand this right? – Severin Feb 22 at 21:14
  • The Plugin Query Monitor shows only hooks called with add_filter() or add_action(). – Severin Feb 22 at 21:27
  • @Severin no the code for the all hook in that example code will store in the db every single time apply_filters or do_action is called – sMyles Feb 22 at 21:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.