我正在更新我的一个插件,但对过时的功能有些犹豫。
最初,我的插件具有全局变量,并且插件的主类已实例化并存储在全局变量中。这样,用户可以使用全局变量来访问插件类中的函数。
$GLOBALS['my_custom_plugin'] = new my_custom_plugin();
然后,例如,在我的FAQ中,我有代码显示了如何从特定的钩子中删除类的一个函数并添加到其他钩子中:
function move_input(){
global $my_custom_plugin;
remove_action( 'before_main_content', array( $my_custom_plugin, 'display_input') );
add_action( 'after_main_content', array( $my_custom_plugin, 'display_input' ) );
}
add_action( 'wp_head' , 'move_input' );
现在,在我的更新中,该display_input()
函数已移至另一个类,我想让人们知道如何访问它。我尝试使用以下弃用通知替换原始功能(在主插件类中):
public function display_input() {
_deprecated_function( 'display_price', '2.0', 'my_custom_plugin()->display->display_input' );
return $this->display->display_input();
}
但是,add_action
和remove_action
函数似乎不会触发弃用通知。奇怪的是,即使array( $my_custom_plugin, 'display_input')
不存在,完全删除该功能也不会导致错误。
如果有人尝试直接访问该功能:
$my_custom_plugin->display_input();
然后,我确实看到了调试通知。这是预期的结果_deprecated_function()
吗?还是我错过了什么?当有人尝试使用不推荐使用的功能删除或添加操作时,是否可以显示调试通知?
更新资料
我意识到我根本看不到调试信息,add_action
因为我将其添加到页面的较低位置。#facepalm!但是,我仍然没有看到有关的任何调试通知remove_action
。
add_action()
实际上在那里。remove_action()
无法像那样处理。
call_user_func(function(){trigger_error('hello?');});
,但是在每个add_action注册的回调中失败。