【问题标题】:add_action function in wordpresswordpress 中的 add_action 函数
【发布时间】:2011-04-05 14:34:20
【问题描述】:

我正在学习创建一个 wordpress 插件 我下载了一个并阅读了代码,我看到了这个 我假设'foo'是它将添加动作的标签..

但是 array() 到底是做什么的呢?

add_action('foo', array('foo1', 'foo2'));

我看了http://codex.wordpress.org/Function_Reference/add_action 并且没有明确的定义..

【问题讨论】:

标签: php arrays wordpress action add


【解决方案1】:

add_action 函数的第二个参数是要使用钩子调用的函数。

function hello_header() {
 echo "I'm in the header!"; 
}

add_action('wp_head', 'hello_header');

数组作为第二个参数的用法是传递一个对象方法,而不仅仅是一个常规函数。

阅读call_user_func 的工作原理。应该提供更多见解。

http://us2.php.net/manual/en/language.pseudo-types.php#language.types.callback(死链接)

【讨论】:

    【解决方案2】:

    没错,第一个参数是标签(您将向其添加操作),第二个参数指定要调用的函数(即您的回调)。

    第二个参数接受一个 PHP 回调,因此接受许多有效的形式。检查所有这些:

    PHP Callback Pseudo-Types

    您上面显示的类型是类型 2。数组的第一个元素指定一个类,第二个元素指定您要调用的类的哪个函数。

    因此,对于您上面给出的示例,它的作用是,每当调用 foo() 操作时,它最终也会调用 foo1->foo2()。

    【讨论】:

    • 谢谢你,richard,我明白(几乎)xD 所以你的意思是 foo1 是类,而 foo2 是类中的方法,对吗?见鬼,我需要在 php xD 中学习 oop,谢谢大家对这样一个愚蠢的问题感到抱歉:P
    • @kapitanluffy - 您能否将此问题标记为已回答
    • foo2() 必须是静态的对吗?这是为什么?这实际上意味着您不能只将类定义传递给对象?
    猜你喜欢
    • 2014-02-03
    • 2015-07-17
    • 2018-11-04
    • 2015-11-12
    • 2014-11-07
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多