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 钩子

后台发生的事情

  1. WordPress 调用 apply_filtersdo_action
  2. 在触发实际钩子之前,Clarkson-hooks 会捕获 do_action('all')
  3. Clarkson-hooks 会检查 \Hooks\{hook-tag} 的存在(Composer 会加载相应的文件)。
  4. 相应的类会调用静态方法 register_hooks。实际的 add_filteradd_action 将在此文件中完成。
  5. WordPress 如预期继续执行。

提示

在生产环境中,务必使用 --optimize-autoloader composer 标志,以确保加载过程顺利进行。否则,class_exists 函数会创建大量的开销。

所有钩子只初始化一次。