12
votes

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

2

2 Answers

13
votes

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.

0
votes

@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().