使用`add_action(‘init’...`会导致性能问题吗?

时间:2016-11-21 作者:Terence Eden

我正在使用add_action(\'init\' 正确吗
如果用户访问,我想显示一些数据example.com/?my_plugin

目前我正在使用。。。

<?php
add_action( \'init\', \'my_plugin\' );

function my_plugin()
{
     if( isset( $_GET[\'my_plugin\'] ) ) {
          ...
          echo $data;
     }
}
据我所知,这将在每次加载博客上的任何页面时运行。这是否会导致性能问题?

有没有更好的方法可以实现这一点?

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

挂钩功能的性能影响取决于挂钩触发的频率和操作的强度。

init 每次加载只能触发一次,因此多次运行不是一个因素。

你最需要注意的是上下文。如果您的逻辑在每次加载时都触发,并且结果是有条件的,那么它应该做的第一件事就是确定上下文是否是您想要的上下文。在所有其他情况下,它是唯一应该做的事情。

只要您的上下文检查是轻量级的,那么性能影响应该是微不足道的。

如果由于某种原因,您的上下文检查很重,那么您可能希望找到一个更具体的钩子(例如模板加载器逻辑中的钩子),该钩子可以在更窄的环境中触发更少的钩子。但对于像你所做的例子这样简单的事情,这是不必要的。

SO网友:MD Sultan Nasir Uddin

初始化钩子在WordPress完成加载后但在发送任何头之前运行。

如果您的操作没有涉及任何复杂的查询,或者没有尝试调用太多的额外文件,那么您就不必担心了。

相关推荐

重置插件版本缓存|PRE_SET_SITE_TRANSPENT_UPDATE_PLUGINS

在我的插件中,我使用这些过滤器进行自动更新并检查许可证。add_filter( \'pre_set_site_transient_update_plugins\', array( &$this, \'check_for_update\' ) ); add_filter( \'plugins_api\', array( &$this, \'plugin_api_call\' ), 10, 3 ); 但正如我所看到的,WordPress在我的插件中更改了版本标签后,会调用该过