micropackage/dochooks

DocHooks - 注解 WordPress 钩子

1.1.4 2023-06-23 08:52 UTC

This package is auto-updated.

Last update: 2024-09-23 11:19:34 UTC


README

BracketSpace Micropackage Latest Stable Version PHP from Packagist Total Downloads License

Micropackage logo

🧬 关于 DocHooks

Laravel 或 Symfony 项目使用方法注解来实现各种功能。这有助于在不编写太多代码的情况下对项目进行组织。WordPress 没有实现此类概念,此包是补救措施。

DocHooks 包允许您做以下操作

class Example extends HookAnnotations {

	/**
	 * @action test
	 */
	public function test_action() {}

	/**
	 * @filter test 5
	 */
	public function test_filter( $val, $arg ) {
		return $val;
	}

	/**
	 * @shortcode test
	 */
	public function test_shortcode( $atts, $content ) {
		return 'This is test';
	}

}

$example = new Example();
$example->add_hooks();

而不是旧的

$example = new Example();

add_action( 'test', [ $example, 'test_action' ] );
add_filter( 'test', [ $example, 'test_filter' ], 5, 2 );
add_shortcode( 'test', [ $example, 'test_shortcode' ] );

💾 安装

composer require micropackage/dochooks

🕹 使用

注解

@action <hook_name*> <priority>
@filter <hook_name*> <priority>
@shortcode <shortcode_name*>

钩子和短代码名称是必需的,而默认优先级为 10

您不需要提供参数数量,类会自动计算。只需使用您想要的回调参数。

测试 DocHooks 是否正常工作

当 OPCache 中禁用了 save_commentsload_comments 时,此包将无法工作,因为评论已被删除。 查看回退解决方案

use Micropackage\DocHooks\Helper;

(bool) Helper::is_enabled();

在类中使用

您可以扩展 HookAnnotations 类

use Micropackage\DocHooks\HookAnnotations;

class Example extends HookAnnotations {

	/**
	 * @action test
	 */
	public function test_action() {}

}

$example = new Example();
$example->add_hooks();

或使用 Trait

use Micropackage\DocHooks\HookTrait;

class Example {

	use HookTrait;

	/**
	 * @action test
	 */
	public function test_action() {}

}

$example = new Example();
$example->add_hooks();

作为独立对象使用

use Micropackage\DocHooks\Helper;

class Example {

	/**
	 * @action test
	 */
	public function test_action() {}

}

$example = Helper::hook( new Example() );

回退

由于 HookAnnotations 对象将调用的钩子存储在 _called_doc_hooks 属性中,您可以从中提取并解析为旧 add_actionadd_filteradd_shortcode 函数的列表。

为此,您需要一个包含所有具有钩子的对象的“仓库”,即运行时类。 在通知插件中查看此方法的示例,它使用 WP CLI 将所有钩子输出到单独的文件。

📦 关于 Micropackage 项目

如名称所示,Micropackages 是包含少量可重用代码的微型包,尤其有助于 WordPress 开发。

目标是拥有多个包,可以通过定义结构来组合它们以创建更大的东西。

Micropackages 由 BracketSpace 维护。

📖 更新日志

查看更新日志文件.

📃 许可证

此软件根据 MIT 许可证发布。有关更多信息,请参阅 LICENSE 文件。