pollora / hook
A modern PHP package for WordPress hook (action/filter) management with callback resolution and reflection caching
v1.1.0
2026-06-23 10:28 UTC
Requires
- php: ^8.2
Requires (Dev)
- laravel/pint: ^v1.22.1
- mockery/mockery: ^1.6
- pestphp/pest: ^v3.8.2
- phpstan/phpstan: ^2.1.16
README
A modern PHP package for WordPress hook (action/filter) management with callback resolution and reflection caching.
Installation
composer require pollora/hook
Quick Start
use Pollora\Hook\Action; use Pollora\Hook\Filter; $action = new Action; $filter = new Filter; // Register action $action->add('init', function () { // runs on WordPress init }); // Register filter $filter->add('the_content', function (string $content): string { return $content . '<p>Appended!</p>'; }); // Execute action $action->do('my_custom_action', $arg1, $arg2); // Apply filter $filtered = $filter->apply('my_filter', $value); // Remove hook $action->remove('init', $callback);
Pollora framework users: When the framework is available, prefer the Laravel facades
Pollora\Support\Facades\ActionandPollora\Support\Facades\Filterfor full DI container support. A notice is emitted if you use the standalone classes within the framework.
Class-based Callbacks
// Class with method matching hook name (StudlyCase convention) $action->add('wp_loaded', MyInitializer::class); // Resolves to [new MyInitializer, 'wpLoaded'] // With dependency injection $action->setCallbackResolver($myResolver); $action->add('wp_loaded', MyInitializer::class); // Resolves via $myResolver->resolve(MyInitializer::class)
Documentation
See docs/hooks.md for full documentation.
Testing
composer test
License
GPL-2.0-or-later