Typecho插件钩子执行优先级

Typecho插件钩子执行优先级

2024年06月11日 作者头像 作者头像 泽泽社长 编辑

评论

0 Count

在制作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就好了。