WJM 插件在 2026 年 4 月 9 日遭遇批量植入后门
几年内,WJM 保持免费开源且能在本地 Docker 中跑通投稿到出版全流程的特性,让它在学术圈里算个实惠选择。但就在 2026 年 4 月 9 日,维持「免费试用」成本为零的前提被打破:有人一口气买下 30 多个 WordPress 插件并在其中埋入后门,WJM 也在列。这并非孤立事件,同一周前,提供主机服务的 Anchor Hosting 负责人 Austin Ginder 刚揭露了插件 Widget Logic 的供应链攻击。被收购的知名插件易主后变成恶意代码,导致超过 30 个插件受感染,最终 WordPress.org 关闭了 31 个。若你的站点没做全量安全审计,或者像那位在后台发现警告的客户一样直到看见提示才察觉,WJM 的安静潜伏可能早已让数据外泄。面对这种 2026 年的新状况,原本只需改 PHP 版本和 XML 命名空间的准备步骤就不够了,还得先清理这 30+ 插件带来的隐患,否则哪怕修好了 str_contains 报错,数据也可能在后台被悄悄窃取。
WJM 的核心功能有哪些
投稿系统如何简化学术期刊的日常操作?
启用 WJM 后,后台会出现「Journal」「Submissions」「Reviews」「Issues」四个菜单。前台通过 [wjm_submission_form] 短代码展示投稿页,作者填好标题、摘要、关键词及 PDF 或 LaTeX 文件,勾选利益冲突声明即可提交,系统自动赋予如 JAM-2024-0042 这样的唯一编号。编辑分配稿件给审稿人,后者通过邮件链接进入前台,利用结构化表单给出单选评分、文本意见和附件,并做出「接受/小修/大修/拒稿」决定。排版时,将录用文章拖入期号,系统生成目录并批量导出 Crossref XML,甚至能一键打包符合 PubMed JATS 标准的文件。
最省心的细节
- 邮件模板可视化编辑:后台集成 TinyMCE,用
{{manuscript_id}}、{{author_name}}、{{review_deadline}}等双花括号变量替换内容,无需修改 PHP。 - 精细角色权限:搭配「Members」插件,审稿人仅见个人稿件且只能改意见,编辑决定下拉框对普通用户隐藏。
- 版本控制:作者修订产生 v1、v2 等新号,旧 PDF 归档保留,便于对比差异。
踩过的坑(也是暂时不上生产的原因)
WJM 的安装与基本功能:从投稿表单到后台菜单
- PHP 版本不兼容:文档称支持 7.4+,但在 8.2 环境下
str_contains会报错,需把strpos(...) !== false改为str_contains()。 - Crossref XML 命名空间过时:导出的
<doi_batch>使用 2001 年 schema,校验失败,需修改includes/export-crossref.php中的schemaLocation为https://www.crossref.org/schema/5.3.1。 - 前端样式依赖经典编辑器:若用 Gutenberg 且主题缺
editor-style.css,表单会变白底黑字,需自行 enqueue CSS。 - 零多语言支持:字符串硬编码,未用
__()或_e()包裹,双语期刊需 fork 重写。
值不值得上手
邮件模板设计:如何利用变量语法自定义通知?
- 适合:无预算、有 PHP 能力、年刊少于 50 篇、无需计费系统的小型或学生期刊。
- 不适合:需对接 ORCID 或查重、要求双盲自动脱敏、作者需看进度条、生产环境禁手动补丁的场景。
兼容性问题分析:PHP 版本不兼容如何修复?
目前的计划是修正 Crossref XML、适配 PHP 8.2 并添加中文包,随后提交 PR。若合并成功,就把那本季刊迁移过去;若不合并,就维护自己的 fork。毕竟在 WordPress 生态里,找一款覆盖全流程且允许改代码的期刊插件不易,但鉴于 2026 年初的批量后门事件,迁移前务必确认代码未被篡改。
全部回复 (4)
想当场把话说完?进全球 AI 聊天室,登录就能开口。

WJM要是能直接套用JATS XML渲染PDF,我就不用在那死磕版面一周了!作者回传修改时会生成新版本号(v1, v2...),旧版本 PDF 自动归档不覆盖,审稿人能对比差异,这个版本控制系统可比手动管理文件夹要好太多了。
WJM这渲染管线太坑了,为了弄个PDF差点被XSLT折磨死。而且我折腾了一周,发现它连多语言都不支持,字符串全硬编码在PHP里,想做个中英双语期刊得自己fork重写所有模板。