2

我正在尝试为s2Member编写一个钩子:

我对以下代码有疑问:

eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
do_action ("ws_plugin__s2member_after_paypal_notify", get_defined_vars ());
unset ($__refs, $__v); /* Unset defined __refs, __v. */
  1. 做什么eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');,尤其是&$$__v

  2. 我找不到ws_plugin__s2member_after_paypal_notify. 这应该是一堂课吗?我怎样才能找到这个类的源代码?

4

1 回答 1

3
  1. eval 接受一个字符串,然后像运行 PHP 代码一样运行它。在这种特殊情况下,代码接受一个字符串并对其进行操作,试图插入一些变量名或变量地址。Eval 是一种非常非常糟糕的做法,也是一种反模式。如果可以 - 不要使用这个插件,因为它可能充满了安全漏洞。

  2. ws_plugin__s2member_after_paypal_notify是一个钩子。WordPress 钩子很棒——它就像 JavaScript 中的一个事件。例如,如果您单击页面中的某些内容,JavaScript 会触发 onclick 事件,并且任何人都可以附加到该事件并运行一些代码。WordPress 钩子的工作方式相同。现在,当您运行do_action ("ws_plugin__s2member_after_paypal_notify", get_defined_vars ());已安装的任何第三方插件时,可以附加到它并执行操作。

如果您想查找在此操作上运行的代码位,请查找add_action('ws_plugin__s2member_after_paypal_notify' ...)(这是您附加到挂钩的方式),或者只是ws_plugin__s2member_after_paypal_notify在您的wp-content目录中查找(任何插件和/或主题都可以附加到此挂钩)。

于 2012-07-04T00:12:07.193 回答