morningtrain/wp-hooks

WordPress 钩子组织系统

v0.3.2 2022-09-28 12:35 UTC

This package is auto-updated.

Last update: 2024-08-28 17:14:15 UTC


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::actionHook::filterHook::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)。请参阅 许可证文件 获取更多信息。