ModulesPress is a modern WordPress plugin development framework that brings the power of TypeScript, React, and NestJS-style architecture to WordPress development.
ModulesPress supercharges your WordPress plugin development by introducing modern development practices and powerful features that make building complex plugins a breeze.
- 📂 PSR-4 Autoloader - All classes are loaded by default
- 🎯 Modern Architecture - NestJS-inspired modular design
- ⚡ Vite Integration - Bundling and hot reloading of assets
- 🎨 Blade Templates - Elegant templating with Laravel's Blade
- 🚀 TypeScript & React - First-class support for modern frontend
- 🛠️ PHP 8+ Attributes - Use decorators for clean, declarative code
- 🎭 Dependency Injection - Powerful IoC container
- 🔌 Plugin Framework - Built specifically for WordPress plugins
- 🔄 Hot Module Replacement - Instant feedback during development
Discover how to get started with ModulesPress. This video walks you through installation, setup, and plugin packaging using the powerful ModulesPress framework and CLI.
composer global require modulespress/cli
Note: Make sure the composer global bin directory is in your PATH.
After installation, you can access the CLI using either modulespress
or mp
in your terminal.
For comprehensive documentation and guides, visit our Official Documentation.
ModulesPress is built on these core principles:
- Modern Development: Embrace contemporary development practices
- Developer Experience: Provide excellent tooling and debugging
- Type Safety: Leverage TypeScript and PHP 8+ features
- Performance: Optimize for production environments
- WordPress Integration: Seamless WordPress compatibility
Here's a simple example of a ModulesPress plugin:
/**
* Plugin Name: My Awesome Plugin
* Description: Built with ModulesPress
* Version: 1.0.0
*/
use MyPlugin\Modules\RootModule\RootModule;
use ModulesPress\Foundation\ModulesPressPlugin;
if (!defined('ABSPATH')) exit;
final class MyAwesomePlugin extends ModulesPressPlugin {
public const NAME = "My ModulesPress Plugin";
public const SLUG = "my-modulespress-plugin";
public function __construct() {
parent::__construct(
rootModule: RootModule::class,
rootDir: __DIR__,
rootFile: __FILE__
);
}
}
(new MyAwesomePlugin())->bootstrap();
We welcome contributions! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
Join our Discord community for support and discussions.
For detailed documentation, please visit our Wiki.
If you need help or have questions:
- Open an issue
- Join our Discord community
Thanks to all our contributors and the open source community!