roots/wordpress-full
Composer package that installs the complete WordPress distribution — core plus bundled themes and plugins — into a configurable web directory. A drop-in replacement for roots/wordpress when you need the full archive, with version pinning and no bundled wp-content, for Bedrock-style projects.
Architecture fit. roots/wordpress-full is not a Laravel package in any conventional sense — it ships no service provider, config, facade, or publishable assets. It is a Composer-packaged distribution of WordPress core plus the default wp-content tree and bundled themes. In a Laravel/PHP estate its realistic role is one of two things: (a) the upstream core artifact for a Bedrock-style WordPress application that lives alongside — not inside — a Laravel codebase, or (b) the content backend for a headless architecture where Laravel serves as the API/consumer (via Corcel, a REST/GraphQL bridge, or a queue-driven sync). Any expectation of "install and composer require into a Laravel app and it just works" is a misread of the artifact.
The "full" variant is the key differentiator and the key liability: bundling wp-content and themes means the package asserts ownership over directories that teams normally version-control themselves. For Bedrock-style layouts where wp-content is deliberately externalized to web/app or a separate repo, this package's contents are largely dead weight or an active conflict surface.
Integration feasibility. Composer installability is the genuine win and the only durable reason to adopt it: core version becomes a lockfile-pinned, CI-reproducible dependency rather than a manually copied vendored tree. That is a meaningful maturity step for any team currently running wp core download or a hand-maintained wordpress/ folder. Feasibility is otherwise conditional — it depends entirely on resolving where wp-content lives and which process owns it.
Technical risk.
composer update into an unbounded blast radius.wp-content and themes can overwrite or shadow custom themes/plugins depending on installer paths.Key questions. Headless or embedded — has that been decided, or is this package being evaluated to defer the decision? Who owns wp-content at runtime, and will this package's copy be excluded from the deploy artifact? Is the product distributed to third parties (GPL exposure)? What is the acceptable patch latency for core CVEs, and does an unattended auto-update satisfy it? What happens if this package is abandoned — is there a documented fallback path?
Stack fit. PHP 8.x + Composer 2 + composer/installers to route core into a controlled webroot (e.g., web/wp). Laravel and WordPress should be separate applications with separate docroots and, ideally, separate deploy pipelines that share infrastructure but not bootstrap. Sharing a single front controller between Laravel and WordPress is possible but pulls WordPress's global state, constants, and hook lifecycle into the Laravel request path — an anti-pattern for a production API. If the goal is headless, WordPress runs as its own app; Laravel consumes it over HTTP or reads its tables read-only via Corcel.
Migration path. Three realistic entry points:
wp-content out of the package entirely.-full variant. Usually the wrong direction; you already externalize wp-content. Prefer the no-content roots/wordpress package and leave this one out.wp-content, and treat bundled themes as removable defaults.Compatibility. Watch for mutual exclusion with other WordPress core packages (they typically declare conflicts), installer path collisions with existing wp-content, and bundled theme versions drifting from what the site actually uses. Confirm PHP version support matches your Laravel runtime — a core bump can outpace your PHP matrix.
Sequencing. (1) Spike: install in a throwaway environment, verify installer paths and confirm what lands in wp-content. (2) Externalize wp-content and themes to a project-owned repo/path; prove the package's copies are inert. (3) Wire CI: lockfile-pinned builds, a Renovate/Dependabot-style PR for core bumps rather than silent auto-update, and a smoke test suite. (4) Staging soak with plugin compatibility checks. (5) Production cutover behind a rollback plan. Do not sequence core-version promotion ahead of an automated regression gate.
Maintenance. The package shifts core patching from manual work to dependency management — a real reduction in toil and a real reduction in mean-time-to-patch, if the update path is gated. Ungated, it relocates risk from "we forgot to patch" to "we shipped an unreviewed core change on a Friday." Treat core version bumps as change-managed PRs with a named approver.
Support. No vendor SLA. 20 stars and an unknown repo imply community-only support and thin bus factor. The team must be prepared to fork and self-maintain, which means someone on staff can read WordPress core release notes and a Composer package definition. Budget for that skill explicitly; it is the single largest hidden cost here.
Scaling. WordPress scales the way it always does: stateless PHP workers behind a load balancer, shared object cache (Redis/Memcached), shared media storage (S3 or NFS), and read replicas for the DB. This package neither helps nor hurts — it is a build-time artifact. Headless consumption adds a caching layer in Laravel and makes upstream latency a first-class concern; budget for it.
Failure modes.
composer update pulls a core bump that breaks a critical plugin — unbounded blast radius without a canary.wp-content overwrites or shadows custom theme/plugin code on install.Ramp-up. Moderate. Engineers need Composer installer-path semantics, Bedrock conventions, and WordPress core release discipline — three distinct competencies that rarely coexist on one team. Expect a two-to-three sprint runway before the team can safely own core upgrades without supervision, and designate an owner for the fork contingency before go-live, not after an abandonment event.
How can I help you explore Laravel packages today?