WordPress module developed for developers who want to quickly add WordPress hooks (action & filter) without having to manually add each hook in the function.php
file (or elsewhere).
Tip
To simplify the integration of this library, we recommend using WordPress with one of the following tools: Bedrock, Themosis or Wordplate.
This documentation only covers the specific points of this library, if you want to know more about WordPress action
or filter
, the easiest is to look at the documentation of WordPress.
You can find all the documentation in the wiki.
Requirements
The server requirements are basically the same as for WordPress with the addition of a few ones :
- PHP >= 8.2
- Composer
Installation
You can use Composer. Follow the installation instructions if you do not already have composer installed.
composer require dbout/wp-module-hook
In your PHP script, make sure you include the autoloader:
require __DIR__ . '/vendor/autoload.php';
Before creating your first hook, you must initialize the module. It is advisable to add this code at the beginning of the functions.php
file of your theme or in a mu-plugin.
<?php
use Dbout\WpHook\HookLoader;
$loader = new HookLoader(
directory: __DIR__ . '/src/Hooks'
);
$loader->register();
If you want to load hooks from multiple directories, you can pass an array in the directory
argument. Additionally, you can use a pattern to define the path :
<?php
use Dbout\WpHook\HookLoader;
$loader = new HookLoader(
directory: [
__DIR__ . '/app/Hooks',
__DIR__ . '/theme/*/Hooks'
],
);
The register
function will automatically search all hooks (action or filter) in the directory
that need to be loaded into WordPress.
Now you have initialized the loader, you just need to create your first hook :
<?php
use Dbout\WpHook\Attributes\Action
#[Action(
name: 'admin_menu'
)]
class EditAdminMenu
{
public function __invoke()
{
// Add your logic
}
}
You can also create filter hook :
<?php
use Dbout\WpHook\Attributes\Filter
#[Filter(
name: 'crontrol/filtered-events',
acceptedArgs: 2,
)]
class EditEvents
{
public function __invoke(array $filtered, array $events): array
{
// Add your logic
return $events;
}
}
We encourage you to contribute to this repository, so everyone can benefit from new features, bug fixes, and any other improvements. Have a look at our contributing guidelines to find out how to raise a pull request.