jascha030 / wp-subscriptions
此包已被废弃,不再维护。未建议替代包。
用于使用WP插件API(钩子)的OOP接口
2.0.1
2020-06-14 18:00 UTC
Requires
- psr/container: ^1.0
This package is auto-updated.
Last update: 2021-08-28 04:36:29 UTC
README
用于与Wordpress插件通用API(钩子)交互的后台。跟踪操作和过滤器,并使挂钩或取消挂钩类方法变得容易。
入门
要求
composer
php >= 7.1
此包未考虑Wordpress编码标准,因此与
php 5.3
或任何其他版本不兼容
安装
composer require jascha030/wp-subscriptions
使用方法
提供者
两种基本类型的提供者是ActionProvider
和FilterProvider
接口。这些接口是SubscriptionProvider
接口的衍生。
这些接口不需要实现任何方法,并由WordpressSubscriptionContainer
和其他核心逻辑使用,以识别Wordpress插件中的类。
这些提供者使用一个静态属性,告诉订阅管理器将特定方法挂钩到WP插件钩子。
操作
public static $actions = []; // ActionProvider interface
过滤器
public static $filters = []; // FilterProvider interface
提供者示例
class ExampleProvider implements ActionProvider { public static $actions = [ 'plugins_loaded' => 'load', // Hook => method 'pre_get_posts' => ['doQueryStuff', 10, 1], // Example with priority and number of arguments 'wp_loaded' => [ ['loaded'], ['moreLoaded'] ], // Example of multiple methods hooked to one action hook ]; public function load() // Method to be hooked to the plugins_loaded hook { echo "This is a method that loads stuff..."; } public function doQueryStuff() { // hmmm, doing lots of querylicious stuff } public function loaded() { // Much load, such wow, very plugadocious } public function moreLoaded() { // Will it ever stop?? } }
此示例显示了一个基本的ActionProvider,一个类也可以同时实现ActionProvider和FilterProvider。
注册提供者
$subscriptionContainer = WordpressSubscriptionContainer::getInstance(); // Get container instance $subscriptionContainer->register(ExampleProvider::class); // Register provider $subscriptionContainer->run(); // Hook all providers and their methods to hooks
信息和灵感
订阅想法提供了灵活性,因此你不必在OOP Wordpres插件中过度使用单例模式。现在你不需要为每个实例扩展类(例如:当你构建一个帖子类型类时,你可以创建一个配置,其中包含可以循环的帖子类型,而不是必须为每个帖子类型创建单独的类)。
基于这篇由Carl Alexander撰写的文章中的想法。