2015-05-06 94 views
0

我目前正在为WordPress写一个插件,并且我很难用add_actiondo_action函数。我想我可能会试图在错误的背景下使用它们,如果是这样的话 - 是否有人能指出我正确的方向?WordPress do_action和add_action;在add_action调用运行参数

我来自讨厌WordPress,喜欢它,我从来没有想过我会写一个wordpress插件,但现在我得到的东西的hang it,它不是正常的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");

然而,之前甚至还试图运行的代码,我意识到:

  1. 这是没有意义的,因为它基本上将远远运行init行动太早了,
  2. 反正它不起作用!

所以,从我了解到:

  1. 我用add_action挂接到现有的功能WP
  2. do_action被保留用于新的挂钩真的,真的不能相信的有用情况应该在哪里调用一个钩子,然后再调用?

所以,我现在的问题是:我怎么能把我的变量传入add_action的代码? Codex没有说任何关于论点,所以我有什么选择?还是,我的逻辑和理解是否有缺陷?

总体目标是什么?目标是在每次调用特定挂接时运行带有设置参数的函数,并且原始挂接不会早于/晚于应该调用

回答

0

添加操作不接受任何新变量也不会将任何变量返回给运行它的函数。但是你可以访问传递给函数的变量。

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); 

如果你想注入变量,你必须考虑一点回到基础。如果您想未传递函数内访问变量,你有两个选择:

  1. 从数据库或服务器存储检索它们或类似
  2. 使用全局声明。您可以访问运行do_action时设置的所有变量。

你很少会呼吁WordPress的钩子do_action(见下文说明),但你可能在你的编码模板文件(插件后再主题后运行)的情况下结束了,你要保留您可以在插件中添加do_action()到模板文件中,并且插件中设置的操作将在该点运行。或者类似的,如果你设计了一个你想在主题中修改的插件,你可以在被调用的函数中添加一个动作到一个后期的wp钩子,你可以在你的主题中为你的自定义钩子和钩子函数调用do_action 。大量的可能性。

无论您早日调用WP钩逻辑,如果你是WP负载模式中

相关问题