记一次 WordPress 插件提交审核的全过程

2026年7月27日17:23:06 发表评论
微信搜一搜 ts小陈

前两天把我的弹窗公告插件提交到了 WordPress 官方应用商店,前后折腾了三轮审核,分享一下整个过程,给打算上架的站长们做个参考。

记一次 WordPress 插件提交审核的全过程

第一轮:自动审核(PCP)

提交 ZIP 包之后,WP.org 会自动运行 Plugin Check Plugin(PCP)扫描,当场就会告诉你过没过

我这轮遇到的问题:

  • ❌ 插件名用了中文「弹窗公告」→ 改成英文 Homepage Popup Notice
  • ❌ 绑定了 jQuery 2.1.4 → 删除(WP 核心已自带,不允许重复捆绑)
  • ❌ Tested up to 写的是 6.9,当时最新版已是 7.0 → 更新版本号
  • ⚠️ Domain Path 指向的 languages 文件夹无 .mo 文件 → 删掉这个头信息

注意:这个扫描只是预检,还是有几率被拒的。不过没过也别怕,修好了重新上传就行。

记一次 WordPress 插件提交审核的全过程

第二轮:人工 + AI 混合审核

提交后等了不到一天,收到了志愿者发来的邮件,这次是人和 AI 一起看,列出了 7 个问题:

🔴 自定义 CSS/JS 输入框

插件里有一个「自定义 CSS」输入框,允许用户直接写 CSS。官方说不允许让用户随意粘贴任意代码,哪怕只是 CSS。

修复: 删掉 s1_custom_css 和 s2_btn_style 这两个字段。

🔴 用了 <style> 和 <script> 直接输出

有一些样式和脚本直接通过 <style> 和 <script> 标签输出在页面里。

修复: 改成 wp_add_inline_style() 和 wp_add_inline_script(),走标准的 wp_enqueue 流程。

🔴 nonce 没有 sanitize

wp_verify_nonce($_GET['_wpnonce'], ...) 直接传入了 GET 参数,没做任何清理。

修复: 改成 wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['_wpnonce'])), ...)

🔴 Contributors 列表没有自己

readme.txt 里的 Contributors 只写了 tschencj,没有我的 WP.org 用户名 tsxcc

修复: 加上了 tsxcc

🔴 load_plugin_textdomain() 多余

WP 4.6 开始会自动加载语言文件,不用再手动调用了。

修复: 直接删掉。

🔴 js-cookie 版本过旧

用的 3.0.1,最新版已经是 3.0.8。

修复: npm view js-cookie 查最新版,下载替换。

🟧 所有权验证

这是最麻烦的一环。我用 163.com 邮箱注册的 WP.org,但插件的作者 URL 是我的个人网站 kqwq.com,志愿者无法确认我是不是那个域名的所有者。

修复: 按官方要求,把 WP.org 账号邮箱改成了 @kqwq.com 的邮箱,然后回复邮件说明情况。第二轮审核时通过了。

记一次 WordPress 插件提交审核的全过程

第三轮:终审

第二轮修复后上传了 v1.0.1,志愿者又看了一遍,这次所有技术问题都通过了,只剩下一个自动扫描的误报——Windows 上的路径分隔符 \ 被误判为文件名不兼容。

回复邮件说明是误报后,目前还在等待最终批准。

记一次 WordPress 插件提交审核的全过程

总结

时间线:

  • 7月20日 — 提交 ZIP 包,自动预检驳回(插件名中文、jQuery 捆绑、Tested up to 过时)
  • 7月20日 — 修好重新上传,当天收到第一轮人工审核邮件(列出 7 个问题)
  • 7月21日 — 修复所有问题,上传 v1.0.1,回复邮件说明所有权
  • 7月22日 — 志愿者回信说所有权仍需验证
  • 7月23日 — 把 WP.org 邮箱改成 @kqwq.com,回复邮件告知
  • 7月24日 — 志愿者确认所有权通过,终审只剩一个文件名误报
  • 7月24日 — 回复邮件说明是误报
  • 至今 — 等待中…

几点经验:

  1. 插件名必须英文,中文名直接报错
  2. 不要捆绑核心库(jQuery、React 等),WP 自带了
  3. 不要有任何让用户插入任意代码的输入框,这是红线
  4. 所有的输入都要 sanitize,特别是 nonce 这种
  5. 善用 wp_enqueue 系列函数,别自己手写 <script> 标签
  6. 邮箱域名要和插件作者域名一致,不然所有权验证会让你多等一轮
  7. 志愿者也是人,回复邮件简短客气就好,别写长篇大论

 

祝各位上架顺利 🚀

ts小陈

发表评论(不允许含有网址!)

:?: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :cry: :mrgreen: :neutral: :razz:

😀

已登录用户不需要填写以下内容