kerryrandolph / wp-hook-annotations
使用PHP docblock @annotations来注册WordPress钩子、过滤器和短代码
0.0.3
2019-06-05 13:42 UTC
Requires
- php: >=7.2
- doctrine/annotations: ^1.6
- doctrine/cache: ^1.8
- php-di/php-di: ^6.0
- psr/container: ^1.0
Requires (Dev)
- ext-json: *
- monolog/monolog: ^1.24
- phpunit/phpunit: ^8.1
- psr/log: ^1.1
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: 3.4.1
This package is auto-updated.
Last update: 2024-09-06 01:43:00 UTC
README
使用PHP Docblock @annotations
来注册WordPress钩子、过滤器和短代码。
要求
- PHP 7.2+
- PHP-DI 6
安装
通过Composer
$ composer require kerryrandolph/wp-hook-annotations
用法
直接在回调函数的docblock中添加注解,而不是使用样板代码add_action()
、add_filter()
或add_shortcode()
/** * @Action(tag="wp_loaded",priority=10,accepted_args=1) */ public function doSomething(){ // do something }
以下注解可以使用
/** * @Action(tag="the_hook_name", priority=1, accepted_args=1) * @Filter(tag="the_filter_name", priority=1, accepted_args=1) * @Shortcode(tag="the_shortcode_name") */
priority
和accepted_args
参数是可选的,分别默认为10和1- 需要双引号:
tag="double_quoted"
。单引号将抛出异常
将多个钩子连接到单个回调函数
/** * @Filter(tag="some_wp_filter") * @Action(tag="some_wp_action") * @Filter(tag="another_wp_filter") */ public function updateSomeValue(string $value): string { return 'updated'; }
添加钩子注解后,您需要获取HookManager
对象来处理它们。
如果您使用依赖注入,最简单的方法是通过提供的HookAware
特质
class MyWordpressHookClass { use HookAware; /** * @Action(tag="wp_loaded") */ public function foo(){} }
HookAware->processHooks
方法由DI容器自动触发,并使用反射来发现钩子并将它们连接到WordPress。
或者,您可以通过DI在构造函数中获取HookManager
,并手动触发processHooks
__construct( HookManager $hook_manager ) { $hook_manager->processHooks( $this ); }
许可证
WP Hook Annotations在MIT许可证下发布。