升级WordPress 6.1后调用get_users()出现cache_users()未定义错误求助
get_users()出现cache_users()未定义错误的解决方案 问题描述
升级到WordPress 6.1后,自定义插件中调用get_users()函数时触发致命错误,报错信息如下:
PHP Fatal error: Uncaught Error: Call to undefined function cache_users() in /Users/priyankgohil/sites/upw-new/wp-includes/class-wp-user-query.php:843
堆栈跟踪:
#0 /Users/priyankgohil/sites/upw-new/wp-includes/class-wp-user-query.php(79): WP_User_Query->query()
#1 /Users/priyankgohil/sites/upw-new/wp-includes/user.php(763): WP_User_Query->__construct(Array)
#2 /Users/priyankgohil/sites/upw-new/wp-content/plugins/my-plugin/Inc/BaseController.php(214): get_users(Array)
原因及解决方案
调用时机过早:
cache_users()是WordPress核心用户功能函数,若在plugins_loaded钩子之前调用get_users(),会导致该函数未被加载。需将get_users()的调用延迟到合适的钩子执行,示例代码:add_action('init', function() { // 在此处调用get_users() $users = get_users(array(/* 你的查询参数 */)); });核心文件损坏:升级过程中可能导致
wp-includes/user.php(cache_users()定义在此文件内)或相关核心文件损坏。可重新下载WordPress 6.1完整安装包,替换wp-includes目录下的文件(注意保留自定义修改内容)。插件冲突:其他插件可能篡改了用户查询逻辑或中断了核心文件加载。暂时禁用所有其他插件,逐个启用排查冲突插件,找到后联系开发者更新或替换插件。
主题冲突:部分主题可能存在对用户查询的不当修改。切换到WordPress默认主题(如Twenty Twenty-Three)测试,确认冲突后修改主题代码或更换主题。
内容的提问来源于stack exchange,提问作者Priyank

