用 Composer 管理 WordPress 的关键是将核心、插件和主题视为依赖:使用 johnpbloch/wordpress 替代官方核心,通过 wpackagist.org 安装插件和免费主题,私有主题则用 Git 仓库;配合 composer/installers 和 installer-paths 配置,确保文件正确部署到 wp-content 及 web 目录。

用 Composer 管理 WordPress 并不难,关键是把核心、插件和主题当作“依赖”来处理,而不是手动上传文件。官方 WordPress 本身不提供 Composer 包,但社区维护了可靠的替代方案,配合合理目录结构和自动加载机制,就能实现版本可控、部署可重复、更新更安全的项目管理。
用 johnpbloch/wordpress 替代官方核心
WordPress 官方没有发布到 Packagist,所以不能直接 composer require wordpress/wordpress。推荐使用 johnpbloch/wordpress —— 这是目前最稳定、更新及时、被广泛采用的核心包。
- 它把 WordPress 源码打包为标准 Composer 包,版本号与官方一致(如
6.5.3) - 安装后默认放在
vendor/johnpbloch/wordpress,需通过composer/installers或自定义脚本复制到 web 根目录(如web/或public/) - 在
composer.json中添加: "require": {
"johnpbloch/wordpress": "^6.5" }
插件统一走 wpackagist.org
WPackagist 是一个镜像服务,将 WordPress.org 插件仓库实时同步为 Composer 兼容的包源。只需配置一次,就能像装普通 PHP 包一样安装任意插件。
- 在
composer.json的repositories字段加入: "repositories": [
{
"type": "composer",
"url": "https://www.php.cn/link/a6e79d4197c9f9927b4102dfcc472dcb"
}
] - 然后运行:
composer require wpackagist-plugin/advanced-custom-fields-pro(注意前缀wpackagist-plugin/) - 插件会默认安装到
wp-content/plugins/(需配合composer/installers设置类型映射)
主题也从 WPackagist 安装,或用私有 Git 仓库
免费主题可直接用 WPackagist(类型为 wpackagist-theme),例如:composer require wpackagist-theme/twentytwentyfour。
- 商业/定制主题通常不在 WordPress.org 上,这时建议托管在私有 Git 仓库(如 GitHub Private、GitLab)
- 在
composer.json中添加仓库: "repositories": [
{
"type": "vcs",
"url": "https://github.com/yourname/your-theme"
}
] - 再执行:
composer require yourname/your-theme:dev-main,并确保composer/installers将其安装到wp-content/themes/
关键配置:让内容目录落到正确位置
默认 Composer 不知道 WordPress 的 wp-content 结构。必须靠 composer/installers 和自定义 installer-paths 显式指定路径。
- 先安装插件支持:
composer require composer/installers - 在
composer.json中配置: "extra": {
"installer-paths": {
"web/wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
"web/wp-content/themes/{$name}/": ["type:wordpress-theme"],
"web/": ["johnpbloch/wordpress"]
}
} - 注意路径要和你的 Web 服务器 DocumentRoot 对齐(比如 Nginx/Apache 指向
web/)
基本上就这些。不需要改 WordPress 源码,也不用写复杂部署脚本——Composer + WPackagist + 合理配置,就能把整个 WordPress 项目变成可版本化、可协作、可 CI/CD 的现代 PHP 工程。










