我正在尝试为 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. */
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
做什么,尤其是&$$__v
?我找不到
ws_plugin__s2member_after_paypal_notify
的源代码。这应该是一堂课吗?如何找到此类的源代码?
-
eval 获取一个字符串,然后像 PHP 代码一样运行它。在这种特殊情况下,代码获取一个字符串并对其进行操作,尝试插入一些变量名称或变量地址。评估是一种非常非常糟糕的做法和反模式。如果可以 - 不要使用此插件,因为它可能充满了安全漏洞。
-
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' ...)
(这就是你附加到钩子的方式),或者只是在你的wp-content目录中寻找ws_plugin__s2member_after_paypal_notify
(任何插件和/或主题都可以附加到这个钩子)。