在课堂外调用一个函数

时间:2013-03-01 07:11:36

标签: php wordpress

这是我的问题中涉及的代码的一部分:

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语句?

3 个答案:

答案 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...
    }
}