点击翻译按钮后,遇到一个弹窗“神秘”闪退问题及解决方法
最近我在为 WordPress 博客添加多语言支持,选择了 Polylang 配合 AutoPoly 插件,实现内容的自动翻译和同步。一切配置都很顺利,直到我在将一篇中文博文翻译成英文时,遇到了一个诡异的现象:点击翻译按钮后,页面会闪烁一下,然后弹窗立刻消失,英文翻译始终无法生成。
经过一番排查,最终找到了“元凶”——文章标题中的 <?php ?> 标记。本文记录下问题的现象、分析过程及解决方案,希望能帮助遇到类似问题的朋友。
一、问题现象
在 WordPress 后台编辑器中,有一篇已经写好的中文文章。使用 Polylang + AutoPoly 的“自动翻译”功能时,界面会短暂出现弹窗,但不到一秒就自动关闭,没有任何错误提示,翻译也无法完成。整个过程如下图所示:

如图1:点击开始翻译按钮后弹窗闪现

如图2:弹窗立即消失,内容未翻译
起初我怀疑是某个特殊字符导致的,比如不可见的零宽空格、BOM 头等。我甚至删除了文章的大部分内容,只留下几段纯文字,但问题依旧存在。
二、排查过程
- 检查 PHP 错误日志
查看服务器错误日志,没有任何相关记录。AutoPoly 也没有输出任何调试信息。 - 逐一删除内容
我尝试通过二分法删除文章正文,发现即使正文完全为空,问题依然出现。说明问题不在正文,而是标题(title)。 - 检查标题内容
我查看文章的标题,发现其中包含了 PHP 代码标记:
<?php ?>

如图4:标题中含有 <?php ?> 的截图
注:必须切换至 代码编辑器中才可以发现问题,如果在 可视化编辑器 中发现不了。如图3

在 WordPress 中,标题通常允许保存普通文本和一些 HTML 实体,但 <?php ?> 是 PHP 的原始标记,并不是合法的标题内容(虽然数据库可以存储)。AutoPoly 在解析标题并发送给翻译服务时,很可能因为无法正确处理这个标记而中断了请求,导致弹窗直接关闭。
三、解决方案
删除标题中的 <?php ?> 标记,将其改为普通文本,例如:
- 原标题:
<?php 获取当前用户信息 ?> - 修改后:
获取当前用户信息

如图5:修改标题后的编辑界面
保存文章后,再次尝试使用 AutoPoly 翻译,弹窗正常显示,翻译任务成功提交,英文版本顺利生成。

如图6:弹窗未消失
四、原因分析
AutoPoly 插件在与翻译引擎(如 DeepL、Google Translate 等)交互时,会对文章标题和内容进行文本预处理。当遇到 <?php ?> 这样的 PHP 标记时,插件可能会:
- 将其识别为潜在的代码注入风险而拒绝处理
- 或者解析标题时因格式异常导致 JSON 数据构造失败
- 或者翻译 API 返回了错误但插件没有捕获显示
由于 AutoPoly 没有给出明确的错误提示,问题表现为“弹窗一闪就消失”。删除 PHP 标记后,标题变成纯文本,翻译流程恢复正常。
五、总结与建议
如果您在使用 Polylang + AutoPoly(或其他任何自动翻译插件)时遇到类似的“弹窗闪烁后消失”的问题,可以按以下顺序排查:
- 检查标题:删除任何特殊符号、PHP 标记、未闭合的 HTML 标签。
- 检查摘要(excerpt):同样避免非正常字符。
- 检查自定义字段:某些插件会向文章中添加自定义字段,字段值中也尽量不要包含 PHP 代码。
- 临时停用其他插件:排除冲突。
- 查看浏览器控制台:按 F12 打开开发者工具,查看 Console 和 Network 选项卡中是否有错误信息。