lidmo / wp-plugin-start
基于 Laravel 特性的 WP 插件启动
v2.2.0
2023-12-27 13:30 UTC
Requires
- php: ^7.4|^8.0
- lidmo/wp-foundation: ^1.0
Requires (Dev)
- roots/wordpress: ^6.1
- symfony/var-dumper: ^5.4
- wp-phpunit/wp-phpunit: ^6.1
- yoast/phpunit-polyfills: ^1.0
README
基于 Laravel 特性的 WP 插件启动
安装
composer create-project lidmo/wp-plugin-start plugin-name
钩子
要了解插件的结构,我建议您检查 src/Hooks 目录中的默认钩子和在 src/Hooks/Kernel.php 类中的这些钩子注册。
钩子扩展了 \Lidmo\WP\Foundation\Hooks\Hook 类,其中处理名称、类型、参数和优先级。钩子后缀自动确定其类型,而命名空间确定其名称。
创建钩子
要向 wp_enqueue_scripts 添加动作,我们可以在 src/Hooks/Wp 目录中创建一个 EnqueueScriptsAction 类。
namespace PluginName\Hooks\Wp; use Lidmo\WP\Foundation\Hooks\Hook; class EnqueueScriptsAction extends Hook { public function handle() { // your code here } }
要向 wp_insert_post_data 添加过滤器,我们可以在 src/Hooks/Wp 目录中创建一个 InsertPostDataFilter 类。
namespace PluginName\Hooks\Wp; use Lidmo\WP\Foundation\Hooks\Hook; class InsertPostDataFilter extends Hook { public function handle($attributes) { // your code here } }
注册钩子
namespace PluginName\Hooks; use Lidmo\WP\Foundation\Hooks\Kernel as HooksKernel; class Kernel extends HooksKernel { protected $hooks = [ // Actions \PluginName\Hooks\Wp\EnqueueScriptsAction::class, // Filters \PluginName\Hooks\Wp\InsertPostDataFilter::class, ]; }
设置钩子属性
protected $name = 'hook_name'; // set hook name protected $type = 'filter'; // set hook filter protected $priority = 100; // set hook priority protected $acceptedArgs = 1; // set hook args