查找此代码使用的 WordPress 插件源代码


Locating WordPress plugin source code used by this code

我正在尝试为 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的源代码。这应该是一堂课吗?如何找到此类的源代码?

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

  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' ...)(这就是你附加到钩子的方式),或者只是在你的wp-content目录中寻找ws_plugin__s2member_after_paypal_notify(任何插件和/或主题都可以附加到这个钩子)。