An open API service indexing awesome lists of open source software.

https://github.com/dimitribouteille/wp-module-hook

⚡ Magic hook autoloader for WordPress.
https://github.com/dimitribouteille/wp-module-hook

hooks php wordpress wordpress-actions wordpress-development wordpress-starter

Last synced: 27 days ago
JSON representation

⚡ Magic hook autoloader for WordPress.

Awesome Lists containing this project

README

          

# WordPress hook autoloader

![GitHub Release](https://img.shields.io/github/v/release/dimitriBouteille/wp-module-hook) [![Packagist Downloads](https://img.shields.io/packagist/dt/dbout/wp-module-hook?color=yellow)](https://packagist.org/packages/dbout/wp-module-hook)

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](https://roots.io/bedrock/), [Themosis](https://framework.themosis.com/) or [Wordplate](https://github.com/wordplate/wordplate#readme).

## 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](https://developer.wordpress.org/plugins/hooks/).

You can find all the documentation in [the wiki](https://github.com/dimitriBouteille/wp-module-hook/wiki) or [here](#usage).

## Installation

**Requirements**

The server requirements are basically the same as for [WordPress](https://wordpress.org/about/requirements/) with the addition of a few ones :

- PHP >= 8.3
- [Composer](https://getcomposer.org/)

**Installation**

You can use [Composer](https://getcomposer.org/). Follow the [installation instructions](https://getcomposer.org/doc/00-intro.md) if you do not already have composer installed.

~~~bash
composer require dbout/wp-module-hook
~~~

In your PHP script, make sure you include the autoloader:

~~~php
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`.

```php
$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.

```php
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](CONTRIBUTING.md) to find out how to raise a pull request.

## Licence

Licensed under the MIT license, see [LICENSE](LICENSE).