Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I'm trying to implement some hooks into a WordPress theme, but rather than write out every function with repetitive code I was wondering if I could use an array to declare the functions instead.

E.g. ordinarily i'd use something like:

function hook_name_1() {
    do_action( 'hook_name_1' );
}

function hook_name_2() {
    do_action( 'hook_name_2' );
}

Is there a way to place the hook/function names into an array and then call them with one foreach loop or something similar? Something like the following:

$hook_array = array(
home_name_1,
hook_name_2
);

foreach ($hook_array as $hook) {
    function $hook() {
        do_action( $GLOBALS['hook'] );
}
}

The do_action do_action part within the function works fine like this, but it's the variable function names that I can't figure out.

Is it possible to set an array like this and then create the function names from the array values?

share|improve this question
3  
Can't you just call do_action() instead of creating the wrapper function? If you really must do this to create named functions rather than anonymous functions you can eval() it, but that is a distinct code-smell. – DaveRandom Apr 15 at 23:52
You could define a bunch of functions with create_function(), but that solution is just as bad as eval(). – nickb Apr 16 at 0:01
Have you asked yourself if this is really necessary? Defining functions dynamically may seem practical, but it is really crummy. – Sverri M. Olsen Apr 16 at 0:02

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.