更新WordPress插件时触发Call to undefined function trailingslashit()致命错误
Call to undefined function trailingslashit()致命错误 问题场景
在WP Engine部署的WordPress站点执行插件更新操作时,触发PHP致命错误,提示核心函数trailingslashit()未定义,调用栈指向翻译注册类文件。服务商技术支持无法提供有效解决方案,怀疑与WPML等多语言插件存在兼容性问题,但无法定位根源。
错误调用栈
PHP Fatal error: Uncaught Error: Call to undefined function trailingslashit() in /nas/content/live/sillaindustrie/wp-includes/class-wp-textdomain-registry.php:103
Stack trace:
#0 /nas/content/live/sillaindustrie/wp-includes/l10n.php(784): WP_Textdomain_Registry->set('default', 'it_IT', '/nas/content/li...')
#1 /nas/content/live/sillaindustrie/wp-includes/load.php(1401): load_textdomain('default', '/nas/content/li...', 'it_IT')
#2 /nas/content/live/sillaindustrie/wp-includes/load.php(278): wp_load_translations_early()
#3 /nas/content/live/sillaindustrie/wp-settings.php(74): wp_maintenance()
#4 /nas/content/live/sillaindustrie/wp-config.php(67): require_once('/nas/content/li...')
#5 /nas/content/live/sillaindustrie/wp-load.php(50): require_once('/nas/content/li...')
#6 /nas/content/live/sillaindustrie/wp-blog-header.php(13): require_once('/nas/content/li...')
#7 /nas/content/live/sillaindustrie/index.php(17): require('/nas/content/li...')
#8 {main}
thrown in /nas/content/live/sillaindustrie/wp-includes/class-wp-textdomain-registry.php on line 103, referer: https://silla.industries/wp-admin/update-core.php?action=do-plugin-upgrade
解决方案
1. 紧急恢复站点访问
- 通过WP Engine文件管理器或SFTP,将
wp-content/plugins目录下的WPML相关插件(如sitepress-multilingual-cms、wpml-string-translation)重命名,添加-disabled后缀,临时禁用这类插件,让站点恢复正常加载并进入后台。 - 若无法确定具体插件,可直接重命名整个
plugins目录为plugins-disabled,之后逐个恢复插件目录名称,排查触发错误的插件。
2. 排查核心函数加载异常原因
trailingslashit()是WordPress核心函数,定义于wp-includes/formatting.php,错误说明该文件在翻译初始化流程中未被加载。- 检查
wp-config.php文件,确认是否存在自定义代码提前调用load_textdomain、wp_load_translations_early等翻译相关函数,这类代码会干扰WordPress原生加载顺序,导致核心函数未就绪。
3. 修复WPML兼容性问题
- 确保WordPress核心版本为最新稳定版,同时将WPML及相关插件更新至官方最新版,版本不兼容是这类错误的常见诱因。
- 若更新后问题仍存在,尝试重新安装WPML:先备份插件设置,删除WPML相关插件,再下载官方最新包重新安装。
- 检查WPML语言设置,确认语言文件路径配置正确,避免自定义路径导致的加载异常。
4. 验证核心文件完整性
- 利用WP Engine后台的核心修复工具,或WordPress后台“工具>站点健康”中的修复功能,检查并修复损坏、缺失的核心文件(如
formatting.php),确保核心函数文件完整。
5. 插件更新安全操作规范
- 后续更新插件时,先在WP Engine的暂存环境测试更新,确认无问题后再推送到生产环境,避免影响线上站点。
- 每次仅更新单个插件,更新后检查站点状态,快速定位引发问题的具体插件。
内容的提问来源于stack exchange,提问作者gi.ottobit

