PHPackages                             wp-media/event-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. wp-media/event-manager

ActiveLibrary

wp-media/event-manager
======================

Event Management System for WordPress

4.0.1(5mo ago)22.1k[1 issues](https://github.com/wp-media/module-event-manager/issues)3GPL-3.0-or-laterPHPPHP &gt;=7.4

Since Jan 25Pushed 5mo ago13 watchersCompare

[ Source](https://github.com/wp-media/module-event-manager)[ Packagist](https://packagist.org/packages/wp-media/event-manager)[ Docs](https://github.com/wp-media/event-manager)[ RSS](/packages/wp-media-event-manager/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (10)Versions (4)Used By (3)

Event Manager
=============

[](#event-manager)

Event management system for WordPress

Overview
--------

[](#overview)

This event management system provides a centralized way to handle WordPress hooks (actions and filters) through an event subscriber pattern. It allows you to organize hook callbacks into dedicated subscriber classes, making your WordPress code more maintainable and testable by decoupling hook registration from business logic.

Purpose
-------

[](#purpose)

This system provides a robust and scalable solution for managing events within WordPress, following best practices for event-driven architecture.

Installation
------------

[](#installation)

Install via Composer:

```
composer require wp-media/event-manager
```

Initialization
--------------

[](#initialization)

Initialize the Event Manager in your WordPress plugin or theme:

```
use WPMedia\EventManager\EventManager;
use WPMedia\EventManager\PluginApiManager;

$event_manager = new EventManager(new PluginApiManager());
$event_manager->add_subscriber(new YourEventSubscriber());
```

Usage
-----

[](#usage)

### Creating an Event Subscriber

[](#creating-an-event-subscriber)

Implement the `SubscriberInterface` to listen to WordPress hooks:

```
use WPMedia\EventManager\SubscriberInterface;

class YourEventSubscriber implements SubscriberInterface
{
    public static function get_subscribed_events(): array
    {
        return [
            'init' => 'on_init',
            'wp_enqueue_scripts' => ['on_enqueue_scripts', 10],
        ];
    }

    public function on_init()
    {
        // Handle init hook
    }

    public function on_enqueue_scripts()
    {
        // Handle script enqueuing
    }
}
```

Reference
---------

[](#reference)

- **Original Design Article**: [Designing a System for WordPress Event Management](https://carlalexander.ca/designing-system-wordpress-event-management/)
- **Author**: Carl Alexander

Implementation Notes
--------------------

[](#implementation-notes)

This implementation adapts the concepts from the referenced article to create a practical event management solution for WordPress applications.

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance60

Regular maintenance activity

Popularity22

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2133 days

Total

2

Last Release

171d ago

Major Versions

3.1 → 4.0.12025-11-28

PHP version history (2 changes)3.1PHP &gt;=5.6.0

4.0.1PHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/5564218f7cd2ccf4542a09b7c5436e61e6b370c97fb3b04db1c5bbc0cc67e3c1?d=identicon)[wpmedia](/maintainers/wpmedia)

---

Top Contributors

[![remyperona](https://avatars.githubusercontent.com/u/3465180?v=4)](https://github.com/remyperona "remyperona (10 commits)")[![hellofromtonya](https://avatars.githubusercontent.com/u/7284611?v=4)](https://github.com/hellofromtonya "hellofromtonya (2 commits)")

---

Tags

wordpresswordpress-plugin-apiwordpresspluginsAPI

### Embed Badge

![Health badge](/badges/wp-media-event-manager/health.svg)

```
[![Health](https://phpackages.com/badges/wp-media-event-manager/health.svg)](https://phpackages.com/packages/wp-media-event-manager)
```

###  Alternatives

[roots/wordpress

WordPress is open source software you can use to create a beautiful website, blog, or app.

19116.9M258](/packages/roots-wordpress)[aristath/kirki

Extending the WordPress customizer

1.3k73.0k4](/packages/aristath-kirki)[wpreadme2markdown/wpreadme2markdown

Convert WordPress Plugin readme.txt to Markdown

9564.6k4](/packages/wpreadme2markdown-wpreadme2markdown)[wpstarter/framework

The WpStarter Framework - Laravel Framework for WordPress

1810.1k4](/packages/wpstarter-framework)[tacowordpress/tacowordpress

WordPress custom post types that feel like CRUD models

232.2k](/packages/tacowordpress-tacowordpress)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
