我目前正在为WordPress编写一个插件,我对add_action
和do_action
函数感到困惑。我想我可能会尝试在错误的环境中使用它们,如果是这样的话 - 有人能指出我正确的方向吗?
我来自恨WordPress爱它,我从没想过我会写一个wordpress插件,但现在我掌握了一些东西,它与普通的PHP开发并没有什么不同。
无论如何,如果我要在插件中使用以下代码:
class aCoolPlugin {
function __construct() {
add_action('clear_auth_cookie', array( $this, 'aCoolFunction' ), 10, 2 );
}
function aCoolFunction( $arg1, $arg2 ) {
// Do something with the arguments
}
}
我如何实际运行aCoolFunction
功能?现在,我尝试了以下内容:
do_action( 'init', "arg1 value", "arg2 value" );
然而,在尝试运行该代码之前,我意识到:
init
动作,而且; 所以,从中我学到了:
add_action
挂钩WP的现有函数do_action
是为新钩子保留的,真的不能想到一个有用的情况,应该先调用一个钩子,然后再调用一次?所以,我现在的问题是:如何将变量传递给add_action
代码? Codex没有提及任何有关参数的内容,那么我的选择是什么? 或者,我的逻辑和理解是否有缺陷?
总体目标是什么?目标是每次调用特定的钩子时都有一个带有set参数的函数,并且原始钩子不会在之前/之后被调用。它应该是
答案 0 :(得分:0)
add动作不接受任何新变量,也不会将任何变量返回给运行它的函数。但是您可以访问传递给函数的变量。
function custom_function($arga){
echo $arga;
}
add_action ('callname', 'custom_function', 10, 1);// 1= number of arguments accepted, use 2 for 2 etc...must add variables to do action call
//sometime later in the code
do_action('callname', $arga);
如果你想注入变量,你必须回想一下基础知识。如果要访问未传递的函数中的变量,则有2个选项:
你很少会为wordpress钩子调用do_action(参见下面的注释),但你最终可能会遇到编码模板文件的情况(在插件之后运行,然后在主题之后运行)并且你想保持你的逻辑您可以将do_action()
添加到模板文件中的插件,插件中设置的操作将在该点运行。或者类似地,如果您设计一个您希望能够在主题中修改的插件,您可以将一个动作添加到已故的wp钩子,在被调用的函数中,您可以在主题中为您的自定义钩子和钩子函数调用do_action 。充满了各种可能性。
无论您提前调用WP挂钩的逻辑是什么,如果您处于WP加载模式内不