roots/wordpress-core-installer
Composer installer for WordPress core that lets you install WordPress into a custom directory, such as Bedrock's web/wp, instead of the default wordpress folder. Keeps core separate from themes and plugins for cleaner, more maintainable sites.
web/wp) instead of being downloaded and self-updated in place. Adopting it is effectively a decision to treat WordPress like any other versioned dependency in your PHP stack.composer.lock.Adopt it when most of these are true:
composer.lock, and CI produces artifacts rather than pulling code on the server.web/wp + web/app conventions.composer.lock revert plus a deploy.allow-plugins policy and accept that this plugin executes at install time (a supply-chain control you must review once, then govern).Look elsewhere when:
WP_CONTENT_DIR.Adoption criteria to gate on before committing: pin an explicit version, confirm the release history and maintainer responsiveness yourself, verify behavior against your current Bedrock/WordPress version, document the manual fallback (install core directly into the web root and manage updates out-of-band), and note the licensing review for GPL-2.0 if any distribution is involved.
For executives: This is a small, unglamorous component that buys us something we currently handle by hand: WordPress core becomes a pinned, auditable dependency in the same pipeline we already use for the rest of the product. The business outcome is a shorter and more predictable security-patch cycle, one release process instead of two, and the ability to roll back a bad core update by reverting a lock file. It also unblocks using WordPress purely as a content service behind our Laravel product, if that is where the roadmap goes. Cost is low and the change is reversible; the main risk is that the package is maintained by a small team, so we pin it and keep a documented manual fallback.
For engineering: It is a Composer custom installer that places WordPress core at a configured path rather than in vendor/, so core is installed and upgraded exclusively through composer require/update with a locked version. That gives deterministic builds, reviewable version diffs, and environment parity, and it removes any need for the application to self-update core. Caveats to plan for: it is a Composer plugin, so it needs an explicit allow-plugins entry and a one-time supply-chain review; it assumes Bedrock-style path conventions and a relocated content directory; and because upstream activity is thin, we should pin the version, watch the repo, and hold a fallback playbook rather than assume long-term maintenance. Verify the current release and compatibility against our target WordPress version before we commit, and treat it as a replaceable adapter, not a platform bet.
One-line summary: a low-cost, reversible way to make WordPress core a locked, CI-deployed dependency — worth adopting only if we already run Composer-driven deployments and are prepared to own the pinning, plugin-allowlist, and fallback ourselves.
How can I help you explore Laravel packages today?