在制作Typecho
插件的时候,有的时候要考虑对其他插件的兼容,比如A
,B
两个插件调用了相同的钩子(插件接口),那么怎么确保谁先执行呢,默认的情况好像就是谁先启动谁就先执行,这样控制权就在用户手里了,这样其实体验很不好,因为用户是最不可控的因素。
教程
所以就需要插件开发者自行控制下自己的钩子生效优先级,比如下方默认钩子的写法,他没规定优先级所以就默认,默认优先级就是10
。
Typecho_Plugin::factory('Widget_Register')->register
然后参考下方这个格式,即可自定义优先级为11
,这个数字越大越滞后执行,越小越优先执行,所以下方的钩子相对于上方的就后执行。
Typecho_Plugin::factory('Widget_Register')->register_11
这样只要我们保证B
的接口优先级数字大于A
即可保证B
永远在A
后面执行。
例如
其实这么多年就遇到过一回需要用到的情况,就是邀请码插件和Rdog注册权限优化插件的兼容问题,Rdog
插件就是要滞后执行,否则就会异常,故后期就把优先级数字改成了11
就好了。
评论区