Actions and filters are so awesome in WordPress. They provide a very simple and powerful way to customization the WordPress core. So, Plugins and themes can execute code before or after a specified event or change the result of many core functions. On the web, I found a few discussion about the Javascript porting of actions and filters.

jQuery triggerHandler approach

In my first experiment, I used the jQuery triggerHandler() featured in order to create something like add_action() as well as add_filter(). In other words, the do_action() becomes $( document ).triggerHandler( 'my_custom_event') and the add_action() becomes $( document ).on( 'my_custom_event', ... ).

However, this approach has some limitations. First of all, is not possible to handle the priority feature: executing sequence. The function add_action(), in fact, supports the priority param in order to run a hook in a specified order. Also, triggerHandler() can return a result. This is great for “emule” add_filter() function but could make a mess.

Rewrite

This implementation is more beautiful and provides a more like experience of actions and filters in Javascript.

Benefits

  • A real stack/queue for actions and filters
  • Priority support for actions and filters
  • Arguments variable
  • Logical split between actions and filters

Have a look to an example of use below: