因为迁移过来WordPress时写了个估计文章阅读时长的插件,想着如果能发布到官方插件站(有没有人用就另外一回事了)岂不件好事,说干就干,先改了下代码。
具体完善了以下的功能,和上架流程没有一定的关系,简单罗列一下:
- 支持了英文单词获取
- 过滤掉标签单词和代码单词计算
- 将配置英文化
- 判断主题才显示自动加载选项
功能完成后,如果你还没阅读过WordPress的插件开发指南请先阅读和纠正你的代码。
接下来在插件根目录新增文件readme.txt
(和Github的README.md不一样),该文件有格式要求,可以通过官方的Readme检测你的文件,并且可以通过官方文档编写或生成文件,我的插件的具体如下:
=== Estimate Read Time ===
Contributors: abigeater
Donate link: https://abigeater.com/
Requires at least: 5.6
Requires PHP: 7.2
Tested up to: 5.9
Stable tag: 1.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
== Description ==
When save post time estimate read time and save to post meta
You can in setting change setting and rate
You can use short code set to anywhere
== Installation ==
1. upload this plugins to you wordpress plugins path
2. enable plugins and resave you post;
== Changelog ==
= 1.0 =
* First Init
在提交前,把代码压缩成zip文件(记得删掉.git目录),然后在WordPress站点注册并登陆帐号,进入到提交页面将你的Zip文件上传并且填写相关信息后提交即可,等待审查团队等待回馈。
审查进度:
- 3月26号晚提交的审查
- 3月29早收到一个反馈邮件(不得不说还挺快),邮件指出了几个问题
- readme.txt内的版本说明不一致(因为一开始复制了别的插件的说明,没有太注意)
- 对于输出设置的html代码内的值没有进行处理,参考说明
- 3月29早修改好重新打包回复邮件
- 3月30日收到反馈邮件,表示我的input的值还是没有处理好,但已经参考了WordPress自身代码写法和别的插件的做法处理了,所以回复了邮件请求审查员指出问题。
- 3月31日收到反馈邮件,表示“You don't escape any of the $args”, 感觉这个不合理但还是照做,重新打包修改后版本回复。
- 4月1日收到反馈,表示意思是,任何用到$args都需要转义(果然是理解错意思😃),并且贴了示例,因为他说的问题代码在其他地方也使用到但他没有提出,产生了以为其他地方能过这里也能过的错觉了。
- 4月5日收到审核通过邮件。
发布插件:
当被通知审核通过时,将会收到第二封邮件,里面包含你的SVN的仓库地址以及插件地址,类似:
* SVN URL: https://plugins.svn.wordpress.org/estimate-read-time
* Public URL: https://wordpress.org/plugins/estimate-read-time
因为还没用过SVN,所以类似着使用git操作了下,首先在Mac安装Svn通过了brew直接安装:
brew install subversion
安装后输入svn --help
,出现报错:Symbol not found: _apr_crypto_block_cleanup,则执行:
brew reinstall apr-util
重新安装后输入svn --help
即可正常。
接下来进入到工作目录,输入:
svn co https://plugins.svn.wordpress.org/estimate-read-time
将远程地址拉到本地,如果你的机器用户名和你的wordpress用户名不一致 在后面补充选项:--username xxxx
拉取后,你的工作目录会出现estimate-read-time
目录,进入到该目录,里面包含了assets
、tasg
、trunk
三个目录。
接下来将你的插件文件(不是整个目录,目录里面的插件)放入到trunk里面,此时我的目录结构是:
assets
目录和tags
目录暂时没用上,可以到官方文档上了解,简单来说就是assets是放图片图标,tags是存放版本分支。
再提醒一遍:readme.txt的文件也是有规范的,可以通过官方的Readme检测你的文件,并且可以通过官方文档编写或生成文件。
回到发布流程,当文件放入到trunk
后在终端输入:
svn add *
因为我这里是从别的目录直接复制文件过来,没有包含.git的目录所以直接添加全部文件,然后输入:
svn commit -m "Version 1.0"
和git一样,commit时输入本次提交的内容,因为没什么写的就输入个版本1.0😄
回车后,如果你在拉取的时候没有增加--password
(不建议在当时增加)的话,会提示输入密码。
推送完毕后,就可以在你的插件地址看到你的插件了:https://wordpress.org/plugins/estimate-read-time
不久之后你的邮箱也会收到一个变更记录的邮件,到此发布完毕。
更新版本:
在svn的项目目录下,执行以下命令:
svn ci -m "推送消息"
最后:
因为我蹩脚的英文水平在和审查团队沟通的时候产生了误会导致推后了几个工作日;这次插件的代码量并不是特别多,所以可能审查的速度也比较快,而且也很细节,并且在邮件中沟通也没有什么架子;不过可能因为审查的严格度和以往不太一样,比如提到的esc_attr方法使用,在别的插件并没有要求的那么严格,但是在这次审核中被要求严格使用了,所以在参考以往的插件时必要的多小心一点。