PHPackages                             phpnomad/wp-plugin-starter - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. phpnomad/wp-plugin-starter

ActiveProject[Utility &amp; Helpers](/categories/utility)

phpnomad/wp-plugin-starter
==========================

Starter for scaffolding a new PHPNomad WordPress plugin. Run via composer create-project, then run the phpnomad/wp-plugin recipe to fill in your plugin.

1.0.0(1mo ago)03MITPHP ^8.2

Since May 1Pushed 1mo agoCompare

[ Source](https://github.com/phpnomad/wp-plugin-starter)[ Packagist](https://packagist.org/packages/phpnomad/wp-plugin-starter)[ RSS](/packages/phpnomad-wp-plugin-starter/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (12)Versions (4)Used By (0)

PHPNomad WordPress Plugin Starter
=================================

[](#phpnomad-wordpress-plugin-starter)

Scaffold a brand-new PHPNomad WordPress plugin in two commands.

Usage
-----

[](#usage)

```
composer create-project phpnomad/wp-plugin-starter my-plugin
cd my-plugin
vendor/bin/phpnomad make --from=phpnomad/wp-plugin '{
  "pluginName": "My Plugin",
  "description": "What my plugin does.",
  "vendor": "acme",
  "package": "my-plugin",
  "namespace": "AcmeMyPlugin",
  "textDomain": "my-plugin",
  "authorName": "Your Name",
  "authorEmail": "you@example.com",
  "authorUrl": ""
}'
```

That's it. After the recipe runs, you have a working PHPNomad WordPress plugin with the right entry file, Application class, root initializer, autoload, tests, and `composer.json` rewritten to match your plugin's identity.

### Notes on the bootstrap arguments

[](#notes-on-the-bootstrap-arguments)

- `namespace` — single-segment, PascalCase, no backslashes (e.g. `AcmeMyPlugin`, not `Acme\\MyPlugin`). v1 of the bootstrap recipe doesn't support nested namespaces; if you need one, edit `composer.json` after scaffolding.
- `authorUrl` — pass an empty string if you don't have one. WordPress will still display the plugin without an Author URI line.

From there, use the rest of PHPNomad's recipes to add functionality. The `initializer` arg points at `{namespace}\\AppInit` — the root initializer the bootstrap created:

```
vendor/bin/phpnomad make --from=phpnomad/datastore '{"name":"Order","initializer":"AcmeMyPlugin\\\\AppInit"}'
vendor/bin/phpnomad make --from=phpnomad/cpt-datastore '{"name":"Event","postType":"acme-event","pluralLabel":"Events","singularLabel":"Event","textDomain":"my-plugin","initializer":"AcmeMyPlugin\\\\AppInit"}'
```

Run `vendor/bin/phpnomad recipes:list --all=1` to see everything available across the installed kits.

Why a starter plus recipes (and not a clone-this-template)
----------------------------------------------------------

[](#why-a-starter-plus-recipes-and-not-a-clone-this-template)

This starter is intentionally tiny. Its only job is to give you `phpnomad/cli` and `phpnomad/wp-plugin-recipes` in your project so the bootstrap recipe can run. The actual plugin structure lives in versioned recipes that improve and ship independently. If you cloned this starter today and again in six months, the second project benefits from improvements without you copying anything.

The previous template approach (`phpnomad/wp-plugin-template`) is being retired in favor of this pattern.

What you get after the bootstrap
--------------------------------

[](#what-you-get-after-the-bootstrap)

```
my-plugin/
├── my-plugin.php           # WordPress plugin entry file with proper plugin header
├── lib/
│   ├── Application.php     # PHPNomad Application class wired for WordPress
│   └── AppInit.php         # Root initializer — recipes register against this
├── tests/
│   └── bootstrap.php       # Minimal PHPUnit bootstrap
├── composer.json           # Rewritten with your plugin's identity and full deps
├── phpunit.xml
├── .gitignore
├── .phpnomad/
│   └── config.json         # Active recipe set (defaults to all installed)
└── README.md               # Your plugin's README

```

Requirements
------------

[](#requirements)

- PHP 8.2 or higher
- Composer 2.0 or higher
- WordPress 6.0 or higher (when activated as a plugin)

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance92

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~0 days

Total

3

Last Release

39d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9e6206223bd6f2a57b8ac80605b1b5c3521faaec18ad3f20f25fb728a9a13784?d=identicon)[tstandiford](/maintainers/tstandiford)

---

Top Contributors

[![alexstandiford](https://avatars.githubusercontent.com/u/8210827?v=4)](https://github.com/alexstandiford "alexstandiford (4 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/phpnomad-wp-plugin-starter/health.svg)

```
[![Health](https://phpackages.com/badges/phpnomad-wp-plugin-starter/health.svg)](https://phpackages.com/packages/phpnomad-wp-plugin-starter)
```

###  Alternatives

[danielstjules/php-pretty-datetime

Generates human-readable strings for PHP DateTime objects

5797.0k](/packages/danielstjules-php-pretty-datetime)[tomloprod/radiance

A deterministic mesh gradient avatar generator for PHP.

1397.5k](/packages/tomloprod-radiance)[phpjuice/slopeone

PHP implementation of the Weighted Slope One rating-based collaborative filtering scheme.

858.7k](/packages/phpjuice-slopeone)[ajbonner/magento-composer-autoload

Extension of Magento's class autoloader making it composer vendor library aware

1416.8k1](/packages/ajbonner-magento-composer-autoload)[alleyinteractive/wp-experimental-features

WP Experimental Features

1026.7k](/packages/alleyinteractive-wp-experimental-features)

PHPackages © 2026

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