Thomas John
Thomas John

Reputation: 1899

wordpress : add_action : why the second parameter is an array instead of a function name

I am trying to create a wordpress plugin, I found one plugin which use oops concepts, my question is why the second parameter in the add_action function is an array instead of a function name

add_action('admin_menu', array(&$this, 'my_menu'));

my_menu is a function in the same class, please help me

Thanks

Upvotes: 13

Views: 7364

Answers (2)

Hiren Kubavat
Hiren Kubavat

Reputation: 109

@Thomas John, you are correct about second argument in add_action also in wordpress org not mentioned anything about this so now, let me know you, we can pass array as second argument array($this,'method').

Description: when object creates of class then constructor automatically calls and your action performs.

WHY IT REQUIRES in wordpress how to create or initialize the class in add_action method in short add_action referencing a class check below example

class Myclass{
 public function __construct() {


add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );

}
}

Referencing a class using add_action().

Upvotes: 2

Celmaun
Celmaun

Reputation: 24762

Because the second argument needs to be a callback. (and add_action internally uses call_user_func_array).

For functions we can just pass its name as a string but we can't do that with object methods, can we?

So an array is passed with 2 elements, first the object and second the method to call:-

array( $object, 'method' )

Oh and you can safely remove that useless '&', PHP4 days are gone now.

Upvotes: 15

Related Questions