0

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

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

4

3 回答 3

1

在课堂上获取

add_action('handle', array(get_class(), 'function_name'));

课外

add_action('handle', array('class_name', 'func_name'));
于 2013-03-01T07:21:26.667 回答
0

您作为第二个参数传递的数组add_action是一个回调。数组中的第一个值是类名,第二个是该类上的静态方法的名称。在一个类__CLASS__中将包含该类的名称。因此,要在其他地方进行相同的调用,您只需将其替换为实际的类名,例如

add_action( 'wp_footer', array('My_Box', 'add_templates' );

有关如何定义回调的更多信息,请参见:http ://www.php.net/manual/en/language.types.callable.php

于 2013-03-01T07:23:49.880 回答
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...
    }
}
于 2013-03-01T07:33:24.057 回答