WordPress后台登录报错但前台正常:找不到wplicense_update_check函数
问题描述
运营的WooCommerce站点前台运行正常,但后台登录时触发如下致命错误,且找不到wplicense_update_check函数的任何引用:
Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function "wplicense_update_check" not found or invalid function name in /home/mysite/public_html/wp-includes/class-wp-hook.php:308
Stack trace:#0 /home/mysite/public_html/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array)
#1 /home/mysite/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#2 /home/mysite/public_html/wp-settings.php(639): do_action('wp_loaded')
#3 /home/mysite/public_html/wp-config.php(108): require_once('/home/mysite...')
#4 /home/mysite/public_html/wp-load.php(50): require_once('/home/mysite...')
#5 /home/mysite/public_html/wp-blog-header.php(13): require_once('/home/mysite...')
#6 /home/mysite/public_html/index.php(17): require('/home/mysite...')
#7 {main} thrown in /home/mysite/public_html/wp-includes/class-wp-hook.php on line 308
错误原因
这个错误是因为某个带授权验证的商业插件(或主题)被异常删除/损坏,但它之前已将wplicense_update_check函数挂载到wp_loaded钩子上。现在函数文件丢失,但钩子的注册逻辑仍在运行时被调用,导致找不到回调函数触发致命错误。
解决步骤
第一步:禁用所有插件恢复后台访问
- 通过FTP或主机文件管理器,进入网站根目录的
wp-content/plugins文件夹。 - 把整个
plugins文件夹重命名为plugins-disabled,强制禁用所有插件。 - 尝试重新登录后台,此时应该能正常进入。
- 再把文件夹改回
plugins,然后逐个重命名单个插件文件夹(比如改成xxx-disabled),每次改完刷新后台,找到触发错误的插件,直接删除或重新下载安装该插件的最新版本。
- 通过FTP或主机文件管理器,进入网站根目录的
第二步:排查主题问题
如果禁用所有插件后仍报错,说明问题出在主题上:- 进入
wp-content/themes文件夹,把当前使用的主题文件夹重命名。 - WordPress会自动切换到默认主题(比如Twenty系列),再尝试登录后台。
- 如果恢复正常,说明主题里残留了钩子注册代码,要么修复主题,要么更换主题。
- 进入
第三步:手动清理残留的钩子注册
- 用文件管理器的搜索功能,在
wp-content目录下搜索字符串wplicense_update_check。 - 找到包含该字符串的文件(通常是插件或主题的
functions.php或某个功能文件),定位到类似add_action('wp_loaded', 'wplicense_update_check');的代码行,直接删除该行即可。
- 用文件管理器的搜索功能,在
第四步:预防后续问题
- 商业插件从官方正规渠道购买下载,避免使用破解版,破解版常存在代码残留或恶意逻辑。
- 卸载插件/主题时,尽量通过WordPress后台的「删除」操作完成,不要直接删除服务器上的文件夹,避免残留注册信息。
内容的提问来源于stack exchange,提问作者Smith

