Skip to content

dimitriBouteille/wp-module-hook

Repository files navigation

WordPress hook autoloader

GitHub Release Packagist Downloads

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.

Documentation

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 or here.

Installation

Requirements

The server requirements are basically the same as for WordPress with the addition of a few ones :

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';

Usage

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.

$loader = new \Dbout\Framework\Hook\HookLoader(
    directory: get_template_directory() . '/hooks',
);

$loader->register();

Now you have initialized the module, you just need to create your first action in the hooks folder in your theme.

use Dbout\Framework\Hook\Attributes\Action;
use Dbout\Framework\Hook\Attributes\Filter;

class MyFirstHook {

    #[Action(name: 'wp_dashboard_setup', priority: 999)]
    public function setupDashboard(): void
    {
        // Do something   
    }
    
    #[Filter(name: 'crontrol/filtered-events', acceptedArgs: 2)]
    public function filterEvents(array $filtered, array $events): array
    {
        // Do something
        return $filtered;
    }
}

Contributing

💕 🦄 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.

Licence

Licensed under the MIT license, see LICENSE.