WordPress 做期刊投稿系统?我把 WJM 折腾了一周
核心功能到底有哪些
装上启用后,后台会多出「Journal」「Submissions」「Reviews」「Issues」四个顶级菜单。投稿端是前台短代码 [wjm_submission_form],作者填标题、摘要、关键词、上传 PDF/LaTeX 源文件、勾选利益冲突声明,提交后自动生成唯一稿件编号(格式可自定义,比如 JAM-2024-0042)。编辑端能在后台把稿件分配给审稿人,审稿人收到邮件点链接进前台填结构化审稿意见——支持单选打分、必填文本框、附件上传,甚至能设置「接受/小修/大修/拒稿」四档决策按钮。版面编排阶段支持把接受稿件拖拽进期号,自动生成目录页、DOI 批量导出 Crossref XML,甚至能一键输出符合 PubMed JATS 标准的 XML 包。
真正省心的细节
- 邮件模板全可视化编辑:后台自带 TinyMCE 编辑器,变量用
{{manuscript_id}}{{author_name}}{{review_deadline}}这种双花括号语法,不用改 PHP 文件。 - 角色权限颗粒度到字段:用「Members」插件配合,能让「审稿人」只看分配给自己的稿件、只能编辑「审稿意见」字段,连「编辑决定」下拉框都隐藏掉。
- 版本控制:作者每次修改回传都会生成新版本号(v1, v2...),旧版本 PDF 自动归档不覆盖,审稿人能对比差异。
踩过的坑(也是目前决定不上生产的原因)
1. PHP 版本敏感:README 写支持 7.4+,实测 8.2 下 str_contains 调用报错,得手动打补丁把几处 strpos(...) !== false 改成 str_contains()。
2. Crossref XML 命名空间写死:导出的 <doi_batch> 里 xmlns:xsi 指向 2001 年旧 schema,Crossref 校验通不过,得在 includes/export-crossref.php 里把 schemaLocation 改成 https://www.crossref.org/schema/5.3.1。
3. 前端样式强依赖经典编辑器:如果你站点用了 Gutenberg 且主题没加载 editor-style.css,投稿表单会裸奔成白底黑字,得自己 enqueue 一份 CSS 覆盖。
4. 多语言零支持:字符串全硬编码在 PHP 里,没用 __()/_e() 包裹,想用 Polylang/WPML 做中英双语期刊,得自己 fork 重写所有模板。
值不值得上手
- 适合:预算为零、团队里有会改 PHP 的人、年刊量在 50 篇以内、不需要复杂的计费/会员系统的小型学会期刊、学生运营的期刊、灰色文献库。
- 不适合:要对接 ORCID/iThenticate/Plagiarism Checker、需要双盲审自动脱敏、要给作者实时看审稿进度条、生产环境不能容忍任何手动打补丁的场景。
我现在的打算是:把 Crossref XML、PHP 8.2 兼容、中文语言包这三块改好,提个 PR 给上游。要是作者合并了,我就考虑把自家那本半死不活的季刊迁过来;要是不合并,就自己维护个 fork 版。毕竟 WordPress 生态里能找到第二个「开箱即用、全流程覆盖、还能自己改代码」的期刊插件,真的不多见。
