Duke
Duke
2020年3月22日

因为前不久冠状病毒疫情爆发,想着为抗击病毒做点贡献,所以开发了一个WordPress插件想要提交到WordPress的插件库。这个插件叫Corona Virus Data,能够在任何WordPress站点的文章、页面甚至侧边栏显示冠状病毒的确诊、死亡和治愈人数。

这次提交WordPress插件的经历,可谓是较为曲折的,现记录下来大致流程和中间遇到的坑,之后再由提交,可能会顺利点。

大概的流程:

  1. 准备文件、账号
  2. 提交人工审核
  3. 审核通过 SVN提交
  4. 插件入库

准备文件、账号

文件包括插件的所有文件打包成zip;

注册一个WordPress.org的账号;

事先设计好插件的图标和banner。

插件文件当然是必须的,但是通常我们新手会不太重视Readme.txt这个文件,这个文件非常重要,WordPress插件审核团队经常会因为Readme.txt的问题拒绝一个插件,或者打回修改,所以在写这个文件的时候必须认真,包括但不限于插件的名称、版本、兼容Wordpress版本、版权证书、修改记录等等,WordPress专门为Readme开设了一个验证器:

https://wordpress.org/plugins/developers/readme-validator/

强烈建议将自己写的Readme粘贴到这个验证器通过之后再提交审核。

WordPress官方提供了一个标准Readme.txt参考,如下:

https://wordpress.org/plugins/readme.txt

Readme.txt的内容,将来也会成为在WordPress插件网站页面上的内容。

提交人工审核

提交地址如下:

https://wordpress.org/plugins/developers/add/

需要将插件文件打包成zip,上传即可。在这个页面也能看到还有多少等待审核的插件。

插件包无需包含图标、Banner和截图。但插件中必须包含Readme.txt、插件同名php文件,index.php,这些文件必须放插件根目录。

提交之后你会收到封邮件,大致就是告诉你,插件已经收到,耐心等待审核通过。这段时间你不能做什么,除了保证你在注册Wordpress.org时候的邮箱畅通以外,只能耐心等待审核结果email。

当然,审核结果有两种情况,如果通过,则会收到

[WordPress Plugin Directory] {plugin name} has been approved!

这样的邮件。如果不通过,邮件内会详细说明具体原因,那就只能按照问题修改,再次提交。

值得注意的是,再次提交插件不需要从网页入口上传插件,只需要在邮件回复中附上修改后的插件的zip压缩包即可。

审核通过 SVN提交

在通知你审核通过的邮件内,会附有一个SVN地址,你的目前的插件(文件包括以后的更新),都是通过这个SVN提交进入Wordpress网站。Wordpress工作人员不会为你提交插件。

通俗点讲,SVN类似于“手动云同步盘”,当你本地修改、增删了文件,可以用一个新的版本号提交到WordPress服务器上作为新版,你的用户在你提交后就会收到更新通知,当他们更新插件的时候,你所提交的新内容就会下载到他们的WordPress里。

WordPress提供给你的SVN目录结构是不能随意修改的,完整的插件SVN目录应该是下面这样:

../
/assets/     //用于存放图标、banner、截图。
/branches/   //插件的分枝版本,通常我们用不到。
/tags/       //插件的旧版本,以往版本,不建议累积。
/trunk/      //插件主目录,进去必须包含同名php和Readme.txt

assets

assets这个目录用于存放插件的一些形象设计,包含Banner、图标和截图。

图标和Banner虽然要到插件审核通过后才会用到,但建议提前构思好,以后会省很多精力。

如何向WordPress提交插件
插件页的banner和图标

Banner

文件命名

  • 普通 Banner: banner-772×250.(jpg|png)
  • 普通 Banner (RTL): banner-772×250-rtl.(jpg|png)
  • 高清 (Retina): banner-1544×500.(jpg|png)
  • 高清 (Retina RTL): banner-1544×500-rtl.(jpg|png)

RTL的意思是从右至左,因为有一些插件需要翻译成例如波斯语这类从右至左书写的语言,在地域设置成RTL语言的时候,就会读取RTL图片文件。

高清和RTL都不是必须的,但是如果你没有普通banner,插件的主也就不会显示Banner。

高清屏幕上会优先载入高清图片,图片可以是png也可以是jpg,根据图片内容的复杂程度选择格式。

图标

文件命名

  • 普通: icon-128×128.(png|jpg)
  • 高清 (Retina): icon-256×256.(png|jpg)
  • SVG: icon.svg

图标也不是必须的,如果任何图标文件都没有,插件页面会显示类似Gravatar那样的随机图标。

截图

文件名

  • screenshot-1.(png|jpg)
  • screenshot-2.(png|jpg)

截图也是png或jpg皆可,但是必须在Readme.txt声明好才能生效。

branches

branches通常我们是不会去使用的, 并且WordPress.org也不会去读取他,在多人团队里,如果你做出一些新的修改但拿不准是不是合适,可以把新的修改放在branches 里 作为分枝版本供别的开发者去验证使用,通常像我这样的One Man Band是不会去用它的,因为如果有分枝,我自己在本地就能建很多。

tags

tags目录是供你存放之前版本插件的地方,这样做唯一的好处是,当你的新版本bug太多,你的用户可以在Wordpress插件页面里选择下载老版本使用,比如说插件的1.0版本,应该存放在 tags/1.0/,插件的2.3版本,应该存放在tags/2.3/ 依然是直接插件文件放进去,不加插件名称目录,不压缩。

没有必要任何旧版本都往Tags里丢,尽量把最新版做好即可。插件的版本控制建议使用数字而不是类似于”pro“ ”高清豪华版“ ”完整版“ 这样不容易分辨顺序的版本号。

trunk

trunk也就是放你目前最新版插件的地方,用户在插件库里下载到的就是这个里面的版本。

trunk目录下直接放插件的文件,不能加插件名目录,比如:

trunk/corona-virus-data/README.txt

这样是错误的,正确的应该是:

trunk/README.txt

强烈不建议直接在trunk目录对插件进行修改和测试,只有在你测试没有问题了,准备上传的时候,才把文件拷贝到trunk目录里进行 SVN commit。

翻译

我做的插件、主题,基本能翻译的字段,我都会按I18n标准进行可翻译处理,这样的好处是当歪果仁需要这个插件的时候,只需要做对应的语言包就能正常使用,完全不需要修改任何代码。

我最初存在一个误区,以为插件包里的 languages/目录必须提供其他语言的语言文件才行,但是后来发现根本不需要。插件内只需要有 “language/插件名.pot”这个供翻译的文件就行。

WordPress的翻译是由另一个完全分离的网站管理的: https://translate.wordpress.org/

当插件上传后被扫描出可供多语言翻译,在Translate那边就会出现在线版翻译界面,你可以对每一个字段的各种语言做“建议”,建议以后,由WP的翻译编辑审核批准了,翻译文件会自动推送给相应语言的用户。

虽然WordPress的说法是,翻译人员大部分都是有工作的志愿者,但是提交翻译等待审核的时间实在是太长了,基本上小众冷门一点的语言从插件上架到插件死的那天,估计都没有编辑会去看。即便是像冠状病毒这样现在全球都在关注的话题。

插件作者可以在 这里发帖 申请获得自己插件的翻译编辑权限,但是其时效也得分国家地区,比如我申请了简体中文和繁体中文的翻译编辑,时至今日,台湾繁体中文任然没有任何人给我回应。有志愿者帮我翻译了波斯文和希腊语,但是依然没有任何编辑来审核。

如果你仅仅希望依靠社区志愿者将你的插件翻译成各国语言,那还是洗洗睡吧。

注意事项

翻译自: https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/

  1. 插件必须遵循GNU协议,最好能遵循GPLv2协议
  2. 开发人员对内容和文件负责。使用第三方服务必须遵循使用条款,否则可能会被拒。
  3. 必须始终提供稳定版本(Stable Version)。
  4. 代码必须是人类可读,不能使用奇怪的变量。
  5. 不允许付费解锁的功能。
  6. 不允许仅以验证许可或者秘钥为目的的第三方服务。
  7. 未征得用户同意,不允许跟踪用户行为和与外部服务器通讯。
  8. 不允许通过第三方系统发送可执行代码。
  9. 不得做任何非法、不诚实、不道德的操作。包括欺骗性SEO。
  10. 不得在未征得用户许可的情况下显示外部链接。
  11. 不得劫持仪表盘。
  12. 面向公众的页面(Reame.txt)不得包含垃圾信息,不得恶意竞争
  13. 插件必须使用WordPress已包含的库
  14. 避免频繁提交插件
  15. 新的版本号必须是递增的。
  16. 提交时插件必须为完整的。
  17. 插件必须尊重商标、版权和项目名。
  18. 插件审核工作人员将保留禁用、删除插件的权利。

我的插件本来已经通过审核一段时间了,但是期间使用了一个韩国人自己做的API没有“使用条款”和”隐私政策“文档,从而导致我的插件被停当了几天。

唯一沟通的方式是给plugins@wordpress.org发邮件,而他们的回复速度真的是……一言难尽。

所以还是尽量遵循他们的规则,减少出问题的几率。

@科技

本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可.