I don't see the big benefits of this practice, for these reasons:
Your callback functions aren't called when registering
The add_action
and add_filter
functions only add an entry to global variable $wp_filter
which holds all filters and actions. See source. It doesn't call your function. Your code will run only when the do_action
and apply_filters
are called (with appropriate hook name), which happens very late in the place where those hooks should be.
You might say that doing so will make the global variable $wp_filter
getting bigger => more memory required. But I think creating a new function has the same problem.
Organizing code
Putting everything in one function force you to remember all hooks in every files in your theme/plugin. You wouldn't do something like this:
- in
header.php
: add hooks and callback functions for things happen in header (like menu, registering script)
- in
content.php
: add hooks and callback functions for filtering content
admin-menu.php
: add hooks and callback functions to add admin menu
(assume that those files are put in your theme/plugin)
Instead of that, you have to:
- put only callback functions in
header.php
, content.php
, admin-menu.php
- and put all hooks in a separated function in another file
=> That will make you hard to know what happens when you look at the content of header.php
file. You have to search to know when these callbacks are fired.
And think about situation when you have multiple classes in your theme/plugin. Do you put all hooks of all classes in one place? Or does each class has a wrapper function that holds all hooks? It's too redundant!
Above these reason, I think it's personal style :). I see some frameworks like Hybrid does what you said. Sometimes it makes me hard to digg in those frameworks!