WordPress网站前端出现Elementor弃用错误,寻求修复方案
问题说明
网站前端出现以下弃用警告,影响正常访问:
Deprecated: The $control_id argument is deprecated since version 3.5.0! in /home/admin/public_html/wp-content/plugins/elementor/modules/dev-tools/deprecation.php on line 304
Deprecated: Hook elementor/widgets/widgets_registered is deprecated since version 3.5.0! Use elementor/widgets/register instead. in /home/admin/public_html/wp-includes/functions.php on line 5758
Deprecated: Function Elementor\Widgets_Manager::register_widget_type is deprecated since version 3.5.0! Use register instead. in /home/admin/public_html/wp-includes/functions.php on line 5383
这些错误均因Elementor 3.5.0版本起弃用了旧API与钩子,通常由第三方插件/主题使用过时代码引发。
解决步骤
1. 更新第三方插件与主题
- 列出所有激活的Elementor扩展插件(如自定义小工具插件、Elementor附加组件),逐个更新至最新版本。
- 检查当前主题兼容性,若主题有适配Elementor 3.5.0+的更新,立即升级。
2. 临时关闭PHP错误显示(紧急恢复)
若需快速恢复网站前端,可修改wp-config.php关闭错误输出:
- 通过服务器文件管理器或FTP找到网站根目录下的
wp-config.php - 找到
define('WP_DEBUG', true);,替换为:define('WP_DEBUG', false); define('WP_DEBUG_DISPLAY', false); - 保存文件后刷新网站,错误提示将被隐藏。
3. 修复自定义代码(针对自研插件/主题)
若错误来自自定义开发的插件或主题,需替换过时API:
- 钩子替换:将
elementor/widgets/widgets_registered改为elementor/widgets/register - 函数替换:将
Widgets_Manager::register_widget_type()改为Widgets_Manager::register() - 参数移除:添加Elementor控件时,删除过时的
$control_id参数,采用3.5.0+规范写法。
4. 排查冲突插件与主题
- 临时禁用所有非Elementor官方插件,逐个重新启用,定位引发错误的插件后,等待开发者更新或更换替代插件。
- 切换至WordPress默认主题(如Twenty Twenty-Four),若错误消失,说明当前主题存在兼容问题,联系开发者修复或更换主题。
内容的提问来源于stack exchange,提问作者Ayush Atale

