You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装Translatepress插件切换德语时出现preg_match未知修饰符报错

问题现象
  • WordPress站点安装TranslatePress翻译插件后,使用默认原始语言时所有功能运行流畅无异常
  • 将站点语言切换为德语时,页面抛出如下PHP警告:

Warning: preg_match(): Unknown modifier '!' in /homepages/2/d909770871/htdocs/clickandbuilds/Neffisso/wp-content/plugins/opal-widgets-for-elementor/includes/class-woo-elementor.php on line 109

问题根因

该报错和TranslatePress插件本身无直接关联,本质是opal-widgets-for-elementor(Opal Elementor小部件)插件代码编写不规范导致的兼容性问题:

  1. 该插件class-woo-elementor.php文件第109行的preg_match()函数使用了动态拼接的正则表达式,且未对动态传入的字符串做正则转义处理
  2. 默认语言状态下,动态拼接进正则的文本内容不包含正则分隔符(通常为/),正则可以正常解析,无报错
  3. 切换到德语等非默认语言时,TranslatePress会对页面文本做翻译替换,替换后的文本中恰好出现了和正则分隔符一致的字符,直接截断了正则表达式结构,导致后续的!字符被PHP识别为不存在的正则修饰符,抛出警告。
解决方案
  • 临时屏蔽报错:打开站点根目录下的wp-config.php文件,将WP_DEBUG常量的值设置为false,关闭前端PHP错误输出,避免影响访客正常访问
  • 代码层面永久修复:
    1. 通过服务器文件管理或者FTP工具,打开报错提示对应的文件:/wp-content/plugins/opal-widgets-for-elementor/includes/class-woo-elementor.php,定位到第109行
    2. 找到该行的preg_match()调用逻辑,对所有动态拼接到正则规则里的变量,使用preg_quote()函数做转义处理,转义时第二个参数传入当前正则使用的分隔符(通常为/)。例如原代码如果为preg_match('/' . $match_str . '!/', $content),则修改为preg_match('/' . preg_quote($match_str, '/') . '!/', $content)
    3. 保存文件修改后,清空站点缓存、TranslatePress翻译缓存,切换德语语言验证即可
  • 无代码基础替代方案:将opal-widgets-for-elementor插件升级到官方最新版本,若最新版本仍未修复该兼容问题,可替换为功能相近的其他Elementor小部件类插件规避问题。

内容的提问来源于stack exchange,提问作者Hasan Chaudhry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:09:18