这是我的问题中涉及的代码的一部分:
class My_Box {
function __construct( $args ) {
add_action( 'admin_footer', array( __CLASS__, 'add_templates' ) );
}
static function add_templates() {
self::add_template( 'list' );
self::add_template( 'grid' );
}
private static function add_template( $name ) {
echo html('script',array( /*args*/));
}
}
上面代码中的add_action要求参数为字符串,如下所示:
add_action('handle','function_name');
现在我需要在类之外运行add_action语句,我想像这样:
add_action( 'wp_footer', My_Box::add_templates() );
此语句收到“通知:未定义的偏移量:0”的调试消息。
如何正确编写此add_action语句?
答案 0 :(得分:1)
用于在课程中提取
add_action('handle', array(get_class(), 'function_name'));
课外
add_action('handle', array('class_name', 'func_name'));
答案 1 :(得分:0)
作为add_action
的第二个参数传递的数组是回调。数组中的第一个值是类名,第二个值是该类上的静态方法的名称。在类__CLASS__
中将包含该类的名称。因此,要在其他地方进行相同的调用,您只需将其替换为实际的类名称,例如
add_action( 'wp_footer', array('My_Box', 'add_templates' );
有关如何定义回调的详细信息,请参阅:http://www.php.net/manual/en/language.types.callable.php
答案 2 :(得分:0)
结帐http://codex.wordpress.org/Function_Reference/add_action#Using_add_action_with_a_class
要在使用类构建插件或主题时使用add_action挂钩,请将$ this添加到add_action调用以及该类中的函数名称,如下所示:
class MyPluginClass
{
public function __construct()
{
//add your actions to the constructor!
add_action( 'save_post', array( $this, 'myplugin_save_posts' ) );
}
public function myplugin_save_posts()
{
//do stuff here...
}
}