WordPress 6.4.1 泰文永久链接字符丢失问题求助
WordPress 6.4.1泰文永久链接字符丢失问题排查与解决
问题描述
在WordPress 6.4.1版本中编辑永久链接时,泰文字符的变音符号会丢失(例如สวัสดีครับ变为สวสดครบ),但WordPress 4.5版本无此异常。
解决步骤
1. 自定义字符过滤逻辑,保留泰文变音符号
WordPress生成永久链接时会通过sanitize_title钩子处理字符,新版本的默认逻辑可能过滤了泰文变音符号。可以添加自定义函数强制保留相关字符:
add_filter('sanitize_title', 'preserve_thai_diacritics', 10, 3); function preserve_thai_diacritics($title, $raw_title, $context) { if ($context === 'save') { // 仅保留泰文、拉丁字母、数字、空格及连接符,过滤其他无关字符 $title = preg_replace('/[^\p{Thai}\p{Latin}\d\s\-_]/u', '', $raw_title); $title = str_replace(' ', '-', $title); $title = preg_replace('/-+/', '-', $title); $title = trim($title, '-'); } return $title; }
将上述代码添加到当前主题的functions.php文件,或创建一个简单的自定义插件来加载这段代码。
2. 确认数据库Unicode配置
检查wp-config.php文件中的数据库字符集配置,确保启用完整的Unicode支持:
define('DB_CHARSET', 'utf8mb4'); define('DB_COLLATE', 'utf8mb4_unicode_ci');
修改后保存文件,进入后台「设置→永久链接」页面,点击「保存更改」刷新永久链接规则。
3. 排查插件/主题冲突
- 暂时停用所有第三方插件,测试永久链接生成是否恢复正常。如果问题解决,再逐个启用插件,定位冲突来源。
- 切换到WordPress默认主题(如Twenty Twenty-Four),排除主题自定义过滤逻辑导致的问题。
4. 对比版本函数差异
WordPress 6.4.1的sanitize_title函数对非拉丁字符的处理逻辑较旧版本更严格,可以参考4.5版本的函数实现,调整自定义过滤钩子的优先级或处理规则。
内容的提问来源于stack exchange,提问作者Panupong Kongarn
相关产品推荐
相关产品推荐

