roots/wordpress
Composer-managed WordPress package from Roots. Installs WordPress in a clean, modern directory structure with environment-based configuration, making core updates and dependencies easy to manage in version-controlled projects.
composer.json/composer.lock, deployed as an immutable artifact. It sequences cleanly into subsequent steps (plugins as Composer deps, config in environment variables, CI-driven releases).Consider it when:
wp-admin in production, no core files committed to Git.wp-content contains only what you deliberately ship.Look elsewhere when:
Adoption caveats to state plainly in the decision record:
For executives: today, WordPress core is something we install and then patch by hand, differently on every site. This package turns core into a versioned dependency, like any other software we ship — same audit trail, same one-click rollback, same automated upgrade PRs. The business outcomes are a measurable patch SLA, a verifiable answer to "what version is live?", and a lower per-site maintenance cost across the portfolio. It is MIT-licensed with no new vendor spend and no lock-in beyond the Roots ecosystem. The main thing we are accepting is reliance on a community maintainer to mirror WordPress security releases — which we will monitor with a defined fallback.
For engineering: composer require roots/wordpress puts core in web/wp, outside version control, pinned by composer.lock; wp-content stays in our repo and config moves to environment variables. Deploys become artifact swaps, so rollback is redeploying the previous build. Core bumps arrive as Dependabot/Renovate PRs and go through CI and staging like any other change — no more clicking Update in production and hoping. We also lose the bundled themes and default plugins, which shrinks what we have to patch. Cost is real but bounded: we adopt (or already have) Bedrock's layout, and we commit to a staging-and-regression step for core upgrades. This is a well-understood pattern in the Roots community; the work is in the migration, not in the tooling.
How can I help you explore Laravel packages today?