wp-plugin-init
v2.1.2
Published
CLI to scaffold a PHP plugin boilerplate structure
Downloads
1,021
Maintainers
Readme
wp-plugin-init
Modern WordPress Plugin Framework Generator
Scaffold a production-ready WordPress plugin built on the WPSuitePress framework — dependency injection, an $wpdb model/query builder, schema migrations, a REST router with controllers, WP-CLI commands, and a Vue 3 + Vite frontend — with a single command.
What it does
wp-plugin-init generates a plugin that is a thin application on top of the reusable wpsuitepress/framework Composer package. The framework is bundled into the plugin's vendor/ and namespace-scoped per plugin at install time, so multiple SuitePress-based plugins can run side by side without class collisions.
Generated architecture
my-plugin/
├── my-plugin.php # constants + returns boot/app.php
├── boot/
│ ├── app.php # bootstrap: container, lifecycle, plugins_loaded → init
│ ├── bindings.php # your service container bindings
│ └── helpers.php # my_plugin_app() / _config() / _view()
├── config/
│ ├── app.php # slug, text_domain, hook_prefix, rest_namespace, versions
│ └── menu.php # admin menu definition
├── app/
│ ├── App.php # plugin facade (extends framework App)
│ ├── Dev/ComposerScript.php # namespace-scoping script
│ ├── Hooks/
│ │ ├── Handlers/ # Activation, Deactivation, AdminMenu, Asset, RestRoute
│ │ ├── CLI/Commands.php # wp my-plugin migrate | info
│ │ ├── actions.php
│ │ └── filters.php
│ ├── Http/
│ │ ├── Controllers/ # DashboardController (REST)
│ │ └── Routes/api.php # Route::get('/stats', ...)->auth('manage_options')
│ ├── Models/Example.php # Example::query()->where(...)->get()
│ └── Views/admin-dashboard.php
├── database/
│ ├── DBMigrator.php # runs + version-tracks migrations
│ └── Migrations/ExampleMigrator.php
├── resources/js/ # Vue 3 + Vite (HMR)
├── language/ # i18n target
└── composer.json # requires + scopes the frameworkRequirements
- Node.js 16+
- Composer 2+
- PHP 7.4+
- The
wpsuitepress/frameworkrepository must be reachable (configured as a VCS repo in the generatedcomposer.json).
Usage
npx wp-plugin-init my-plugin
# or: npm i -g wp-plugin-init && wp-plugin-init my-pluginThis generates my-plugin/, replaces all identifiers, runs composer install
(pulling and namespace-scoping the framework), then installs and builds the
frontend assets.
Generated identifiers (for suite-one)
| Concern | Value |
|---|---|
| Namespace | SuiteOne\ |
| Framework namespace | SuiteOne\Framework\ |
| Constants | SUITE_ONE_VERSION, SUITE_ONE_PATH, … |
| Hook prefix | suite_one/ |
| REST base | /wp-json/suite-one/v1 |
| WP-CLI | wp suite-one <command> |
| JS global | SuiteOneSettings |
After generation
cd my-plugin
npm run dev # Vite dev server with HMR
npm run build # Production assets
composer install # Re-run if the framework repo was offlineLicense
MIT © Ruman Ahmed
