WordPress后台无法成功切换站点德语,常规排查无效该如何解决
WordPress后台德语语言切换失效排查方向
故障背景
我尝试为WordPress后台设置德语语言,德语语言包已完成安装,可以在【Settings> General> Site Language】路径下选中该选项,但保存设置后会自动跳转回英语。
已尝试的无效排查操作:
- 在wp_config.php中设置WPLANG参数,也尝试过移除该参数
- 查看数据库对应配置,参数已设置为de_DE
- 安装并查看Loco Translate配置,其展示的站点语言同样为英语;卸载Loco Translate,当前无WPML/Loco类翻译插件安装
- 检查语言包更新,无可用更新
- 安装正式版德语语言包并尝试切换
- 通过FTP核查语言文件,仅存在德语语言文件,无英语语言文件
- 确认WordPress版本为最新的5.8版本
- 日志文件无报错记录
- 测试将.htaccess、wp_content、wp_content/languages及wp_content下所有其他子文件夹权限设为777(仅临时测试)
- 禁用所有插件
- 其他配置如时区(UTC + 2)可正常修改保存
- 开启WordPress所有开发者调试模式,无报错输出
define('FS_METHOD', 'direct');配置无效果- 检查WP site-health状态正常
- 浏览器语言设置为德语
- 尝试使用其他浏览器操作
验证有效的操作:
- 测试安装并激活WordPress官方默认主题「Twenty One」后语言切换正常
可进一步排查的方向
- 检查当前自定义主题的
functions.php文件,是否存在强制覆盖站点语言的代码,常见的有add_filter('locale', function(){ return 'en_US'; })类的钩子、硬编码定义WPLANG常量的逻辑,这类代码优先级高于系统全局配置,会导致修改后台设置不生效 - 查看自定义主题目录下的languages文件夹及语言加载逻辑,部分主题会通过
load_theme_textdomain强制指定固定的locale参数,或者自带独立的语言配置项,优先级高于WordPress全局语言设置 - 临时在主题
functions.php末尾加入测试代码,定位locale被修改的触发阶段:
触发后如果返回的是add_action('init', function() { var_dump(get_locale()); exit; });en_US,说明在主题加载阶段就已经修改了全局语言参数 - 排查主题后台是否自带独立的语言切换配置,不少商业主题会单独做语言设置项,修改全局站点语言不会同步该参数,需要单独在主题配置内修改为德语
- 清空所有服务端缓存,包括OPcache、Redis对象缓存、站点静态缓存等,部分缓存规则会缓存旧的请求响应,导致配置更新后依旧返回旧的英语页面
- 核查数据库
wp_options表内对应当前主题的配置项theme_mods_<你的主题别名>,看是否存储了旧的语言参数,残留的翻译插件配置也可能存在该字段内导致全局配置被覆盖
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

