如何手动逐个运行挂钩?

时间:2018-06-18 作者:John Smith

我正在跟踪慢度问题。该行:

do_action( \'init\' );
在中wp-settings.php 单独运行需要4.5秒。大多数插件现在都已关闭。有没有办法一个接一个地运行这些init()钩子,这样我就可以衡量是哪个例程导致了这种惊人的缓慢?

1 个回复
SO网友:Johansson

当出现像您这样的问题时,可能有一个函数卡在某个地方,导致加载延迟。可以通过以下方式检索连接到挂钩的所有函数的列表:

global $wp_filter;
$actions = $wp_filter[\'init\'] ;
现在,您可以使用remove_action() 看看问题什么时候解决。当然,有些函数是核心函数,如果取消挂钩,将导致加载崩溃。

还有另一个原因会严重减慢加载过程。WordPress和其他一些插件有时可能会尝试使用cURL或其他方法访问远程URL。如果远程服务器速度较慢或不立即响应,则性能影响将非常大。如果是本地安装,我建议您尝试在未启用网络适配器的情况下加载您的网站。

结束

相关推荐

Hooks are not executing

根据我对钩子的理解,您可以通过do\\u action(“hook\\u name”)创建一个钩子;然后向所述钩子中添加一些内容,并在希望它执行钩子的位置调用该方法,因此:public function hook_name(){ do_action(\'hook_name\'); } 有些地方你会做类似的事情:add_action(\'hook_name\', \'some_hook\'); 然后在主题中的一些地方,你称之为:hook_name();