level-level / clarkson-hooks
“即时” WordPress Hooks 解决方案。
0.1.1
2018-04-18 07:25 UTC
This package is auto-updated.
Last update: 2024-08-27 15:46:03 UTC
README
“即时” WordPress Hooks 解决方案。
Clarkson-hooks 将 all
动作和 composer 自动加载结合,只包含您实际要使用的过滤器。
设置
1. 将 clarkson-hooks 定义为依赖项。
composer require level-level/clarkson-hooks
它将自动加载。
2. 将 Composer 指向一个目录以找到您的 Hooks
命名空间。
"autoload": {
"psr-4":{
"Hooks\\": "app/Hooks"
}
}
3. 定义一个钩子
示例最小化 init.php(在上述 composer 指定的路径下使用时,请将此放入 app/Hooks/init.php
)。
<?php
namespace Hooks;
use Clarkson\Hooks\iHook;
class init implements iHook {
public static function register_hooks( $name ){
add_action('init', function(){
wp_die('Hello world');
});
}
}
注意:`\Clarkson\Hooks\iHook` 接口确保您正确地定义了您的 `Hook` 对象。
对于实际示例,请查看 Clarkson 主题中的 init 钩子。
后台发生的事情
- WordPress 调用
apply_filters
或do_action
。 - 在触发实际钩子之前,Clarkson-hooks 会捕获
do_action('all')
。 - Clarkson-hooks 会检查
\Hooks\{hook-tag}
的存在(Composer 会加载相应的文件)。 - 相应的类会调用静态方法
register_hooks
。实际的add_filter
或add_action
将在此文件中完成。 - WordPress 如预期继续执行。
提示
在生产环境中,务必使用 --optimize-autoloader
composer 标志,以确保加载过程顺利进行。否则,class_exists 函数会创建大量的开销。
所有钩子只初始化一次。