以前如果自己写了一个插件,然后不小心和 WordPress.org 上托管的插件同名了,那么就有可能被市场上的插件的更新覆盖的风险,怎么办呢?
新的插件头:”Update URI”
WordPress 5.8 引入了一个新的插件头:”Update URI”,使用它可以避免第三方插件被 WordPress.org 插件目录中同名插件更新而被覆盖,简单说 WordPress 只要判断它的值和 https://wordpress.org/plugins/{$slug}/
或者 w.org/plugin/{$slug}
都不同,那么 WordPress 就不会更新该插件。
“Update URI” 插件头可以设置:
Update URI: https://wordpress.org/plugins/wpjam-basic/
继续使用官方的更新Update URI: https://blog.wpjam.copm/project/wpjam-basic/
使用自己的更新系统Update URI: wpjam-basic
随便写点东西也可以
当然也可以设置为 false,但是这样就不能用下面的 filter 进行自定义更新,或者被其他使用 false 的自定义更新插件的代码自定义更新。
所以要设置了,最好还是设置一个自己相关的唯一的值,比如:
https://blog.wpjam.copm/project/wpjam-basic/
对于还是在 WordPress.org 托管插件的插件作者来说,其实无需设置这个值,如果非要设置,那就一定要设置成下面的值:
https://wordpress.org/plugins/{$slug}/
w.org/plugin/{$slug}
比如 WPJAM Basic 插件非要设置,就设置成:
https://blog.wpjam.copm/project/wpjam-basic/
不然用户无法获取更新官方插件库提供的更新信息。
update_plugins_{$hostname} filter
此外,WordPress 5.8 还引入了
filter,第三方插件开发者可以使用它来为特定的主机名下的插件提供更新服务。update_plugins_{$hostname}
这个 filter 用来过滤指定主机名下的插件的更新信息,filter 的动态部分 $hostname
指的是 Update URI
插件头对应 URL 的主机名,此外还有四个参数:
$update
:插件更新信息,默认为 false。
$plugin_data
:插件头信息列表。
$plugin_file
:插件文件名。
$locales
:已安装的语言环境,用于查找翻译。
通过这个 filter,第三方插件作者就可以构建自己的插件更新体系了,WordPress 知识星球之后的福利插件之后就会通过该方式提供更新信息,方便大家。