morningtrain / wp-hooks
WordPress 钩子组织系统
v0.3.2
2022-09-28 12:35 UTC
Requires
- php: ^8.0
- morningtrain/php-loader: ^0.3.0
Requires (Dev)
- brain/monkey: ~2.0.0
- pestphp/pest: ^1.21
Suggests
- morningtrain/wp-view: Allows rendering Blade templates directly on an action
README
让您组织所有 WordPress 动作和过滤器。
目录
简介
此工具用于组织 WordPress 钩子。
此工具让您
- 递归地加载目录中的所有 .php 文件
- 使用流畅的 API 添加过滤器和动作
- 在动作上直接渲染 Blade 视图(如果已安装 morningtrain/wp-view)
入门
要开始,请按照 安装 部分中的说明安装此包。
要使用此工具,请参阅 用法。
安装
使用 composer 安装
composer require morningtrain/wp-hooks
依赖项
morningtrain/php-loader
PHP Loader 用于加载和初始化所有钩子
morningtrain/wp-view(可选)
WP View 用于加载和初始化所有钩子
用法
要加载给定目录的所有钩子
// Load all .php files in ./Hooks and add all found Hooks \Morningtrain\WP\Hooks\Hook::loadDir(__DIR__ . "/App/Hooks");
多个目录
由于此工具使用 PHP Loader,您可以使用多个目录。
// Load all .php files in ./Hooks and add all found Hooks \Morningtrain\WP\Hooks\Hook::loadDir([__DIR__ . "/App/Hooks",__DIR__ . "/EvenMoreHooks"]);
创建钩子
要创建钩子,首先调用 Hook::action
、Hook::filter
或 Hook::view
。然后开始一个链来添加附加参数。
添加动作
要添加动作,请调用 Hook::action
。您可以将回调作为第二个参数添加,或者使用 handle()
\Morningtrain\WP\Hooks\Hook::action('init',[Some::class, 'someMethod']); // is the same as \Morningtrain\WP\Hooks\Hook::action('init') ->handle([Some::class, 'someMethod']); // With a priority \Morningtrain\WP\Hooks\Hook::action('init') ->priority(20) ->handle([Some::class, 'someMethod']); // Rendering a view \Morningtrain\WP\Hooks\Hook::action('init') ->view('some_view');
注意:不需要定义回调的参数数量。动作(或过滤器)将查看回调的定义以了解它需要多少参数。
添加过滤器
添加过滤器与添加动作类似。调用 Hook::filter
。您可以将回调作为第二个参数添加,或者使用 filter()
\Morningtrain\WP\Hooks\Hook::filter('mime_types',[Some::class, 'addSvgMimeType']); // is the same as \Morningtrain\WP\Hooks\Hook::filter('mime_types') ->filter([Some::class, 'addSvgMimeType']); // With a priority \Morningtrain\WP\Hooks\Hook::filter('mime_types') ->priority(20) ->filter([Some::class, 'addSvgMimeType']); // For simple filters that return true or false \Morningtrain\WP\Hooks\Hook::filter('use_some_feature') ->returnTrue(); \Morningtrain\WP\Hooks\Hook::filter('use_some_feature') ->returnFalse();
注意:不需要定义回调的参数数量。动作(或过滤器)将查看回调的定义以了解它需要多少参数。
在动作上添加视图
如果已安装 morningtrain/wp-view
包,您可以从动作直接渲染 blade 视图。
// This will render the footer/copyright view in the footer \Morningtrain\WP\Hooks\Hook::view('footer','footer/copyright');
注意:您必须定义钩子中使用的参数数量,因为钩子没有回调方法进行分析。
如果您需要在视图中使用动作参数,您可以从另一个方法渲染视图或使用 视图组合。
// An action that looks something like this: do_action('some_post_action',$postId); \Morningtrain\WP\Hooks\Hook::view('some_post_action','someView'); \Morningtrain\WP\View\View::composer('some_post_action',function($view){ [$postId] = $view; $view->with('postId',$postId); });
使用单次使用处理器(可调用)
您可以使用如下所示的单次使用类
class FilterMimeTypes{ public function __invoke(array $mimeTypes) { $mimeTypes['webp'] = 'image/webp'; return $mimeTypes; } } \Morningtrain\WP\Hooks\Hook::filter('mime_types',FilterMimeTypes::class);
鸣谢
测试
composer test
许可证
MIT 许可证(MIT)。请参阅 许可证文件 获取更多信息。