我正在尝试为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
的源代码?这应该是一个班级吗?如何找到此类的源代码?
非常感谢!
答案 0 :(得分:3)
eval接受一个字符串,然后像运行PHP代码一样运行它。在这种特殊情况下,代码接受一个字符串并操纵它,试图插入一些变量名或变量地址。 Eval是一种非常糟糕的练习和反模式。如果你可以 - 不要使用这个插件,因为它可能充满安全漏洞。
ws_plugin__s2member_after_paypal_notify
是一个钩子。 WordPress钩子非常棒 - 就像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
(任何插件和/或主题都可以附加到此钩子上)