【发布时间】:2015-05-28 15:37:02
【问题描述】:
我在我的 Wordpress 网站上遇到了一个问题,我追踪到 admin_init 被调用了两次。
我尝试停用所有插件,问题就消失了。然后我恢复了每个插件,发现是哪个插件导致了问题。
我的问题是,我怎样才能找到额外的 admin_init 调用的原因?
该插件是为网站定制的,所以我不能简单地用不同的插件替换,而且它是我自己搞混的(脸红了)。
这是我在对该主题进行一些研究后所得到的结果......
我添加了
remove_filter("wp_head", "adjacent_posts_rel_link_wp_head",10);
到functions.php文件(虽然这可能只会停止“init”钩子被调用两次而不是“admin_init”)?
我设置了一个函数,每次调用 admin_init 时都会向我发送一封电子邮件。在生成电子邮件时,我向其中添加了以下代码:
$backtrace = print_r(debug_backtrace(), true);
然后将 $backtrace 添加到电子邮件文本中。
我收到的第一封电子邮件有完整的回溯,显示了导致源自“admin-ajax.php”的 admin_init 调用的所有函数。第二个 admin_init 呼叫电子邮件根本没有任何回溯信息?
我还了解到,多次调用 init(可能是 admin_init 挂钩)可能是由于网站上的图像(或其他包含)返回 404 错误。
我在页面上右键单击并“检查了元素”以打开 Firebug 窗口并查看了选项卡,但我不能 100% 确定如何检查。我没有在任何选项卡下看到任何奇怪或 404 错误,但如果有人能澄清检查程序,我将能够重新检查确定。
那么...关于为什么我会收到这个额外的 admin_init 调用以及我可以在软件中检查哪些内容以查看它是在哪里生成的,还有什么其他想法吗?
谢谢。
【问题讨论】:
-
我也遇到了 admin_init 在同一个请求中被多次调用。我想知道这是怎么回事。我搜索了 404 错误,发现了这个:stackoverflow.com/questions/4372596/…。我不认为是这样,因为那些 404 请求是新请求。
-
@rosell.dk 您是否在下面的答案中尝试了我的解决方案?这就是我解决问题的方法。
-
不,我不能,因为有人正在使用我的插件。我的插件无法处理多次调用 admin_init 钩子,因为在我的钩子中定义了一个函数。我解决了这个问题,但想确保不是我的插件导致了多次火灾的不当行为。这是我们的讨论:github.com/rosell-dk/webp-express/issues/186