将参数传递给add_action

时间:2016-11-27 00:39:41

标签: wordpress

给定一个函数" plugin_update'这将采用参数$ version,如何使用add_action方法使用以下语法将值传递给此方法(因为该方法在类中):

add_action('plugins_loaded',array('test-app-class','plugin_update'));

我尝试了几种似乎不起作用的变体。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:0)

简短回答:不。

让我解释原因。

WordPress事件引擎说明

add_action构造允许您注册对事件的回调。在您的情况下,事件为plugins_loaded。然后在构造do_action()do_action_ref_array时触发该事件。

事件发生时会发生什么? WordPress Core执行以下操作:

  1. 如果传递任何参数,则组装参数
    1. 对事件注册表进行排序
    2. 按顺序调用每个已注册的回调(由优先级编号决定,何时加载到注册表中),传递参数(如果有的话)
  2. 传递给每个回调的参数由触发构造确定。咦? do_action()指定是否将任何参数传递给回调。然后每个回调都可以声明它是否需要它们。

    为什么你无法通过版本?

    plugins_loaded事件不传递参数。您的回调函数无法指定未从触发构造传递的参数。

    换句话说,执行`do_action'的代码确定了函数可以选择接受和使用的参数。

    为什么呢?因为do_action是主要的发射机制。它说" Hello插件和主题,我现在正在运行。如果你是我的注册,那么我也会叫你tomrun。我也可能会给你发一些参数。"

    您的选项

    如何让版本进入回调?

    您有很多选择:

    • 如果动态(将更改)
    • 将其存储在数据库中
    • 将其存储为环境变量并加载
    • 将其存储为配置参数并加载

    当你使用OOP时,我建议在实例化对象时注入它。我通常在创建对象时注入动态配置。

    参考

    以下是Word代码触发do_action( 'plugins_loaded' );的核心代码的链接:click here to view on GitHub。注意,没有声明参数,这意味着不会传递任何参数。