必须用 composer create-project roots/bedrock my-site 初始化项目,因其是项目模板而非可 require 的库;直接 require 会导致目录错位、配置失效。

不能用 composer require wordpress/core 或类似命令直接装 WordPress 核心——它根本不存在于 Packagist,官方也没发布过这个包。你真正需要的不是“安装 WordPress”,而是初始化一个带工程化结构、能用 Composer 管理核心/插件/主题的开发脚手架。Bedrock 是目前最成熟、社区支持最稳的选择。
为什么必须用 create-project 而不是 require
Bedrock 是一个项目模板(project template),不是可被 require 的库。直接 composer require roots/bedrock 会把 Bedrock 文件塞进 vendor/,导致 web/、config/、.env 等关键目录错位或缺失,后续所有路径配置、环境加载都会失效。
- 正确命令是:
composer create-project roots/bedrock my-site - 执行后,
my-site/就是完整项目根目录,含web/(webroot)、config/(配置)、.env(环境变量) - 别跳过
cp .env.example .env这步,否则WP_HOME、数据库等全为空,后台链接和媒体路径会崩 -
wp-config.php在config/application.php里动态生成,不要手动改它
johnpbloch/wordpress 和 roots/wordpress 的区别在哪
两者都是社区维护的 WordPress 核心镜像包,但用途和集成方式不同:
-
johnpbloch/wordpress:纯核心文件同步,更新快,适合自定义结构项目;不带 symlink 或自动加载逻辑 -
roots/wordpress:专为 Bedrock 设计,内置wp core download后的软链机制,能自动把核心映射到web/wp/,但版本同步略滞后 - Bedrock 默认用的是
roots/wordpress,你不需要手动require它——create-project已预置在composer.json的require里 - 别混用:如果强行
composer require johnpbloch/wordpress进 Bedrock 项目,会导致双核心冲突,wp-settings.php加载失败
插件/主题怎么装才不会进错目录
Bedrock 把插件默认装到 web/app/plugins/,主题到 web/app/themes/,而不是传统 wp-content/。这靠的是 composer/installers + installer-paths 映射,不是靠 wpackagist 自己决定路径。
- 确认
composer.json中已存在"type": "wordpress-plugin"类型匹配规则(Bedrock 模板已配好) - 添加仓库:
"repositories": [{"type": "composer", "url": "https://wpackagist.org"}] - 安装插件:
composer require wpackagist-plugin/query-monitor→ 自动落到web/app/plugins/query-monitor/ - 手动创建
web/app/plugins/目录?不用——Composer 会自动建,但前提是web/app/父目录存在(create-project已建好) - 私有插件?用 Git URL 声明
repositories,再composer require myorg/my-plugin:dev-main,确保其composer.json里有"type": "wordpress-plugin"
WP-CLI 命令找不到 wp-config.php 怎么办
Bedrock 的 wp-config.php 不在项目根目录,而是在 web/wp-config.php(由 config/application.php 引入)。WP-CLI 默认从当前目录向上找,所以必须指定路径或用 Bedrock 封装的 wrapper。
- 进
web/目录再执行:cd web && wp plugin list - 或者用全路径:
wp --path=web plugin list - 更推荐用 Bedrock 自带的
./vendor/bin/wp,它已预设--path=web和--require=../config/application.php - 别在项目根目录下直接跑
wp rewrite structure,否则报Could not find wp-config.php是必然的
最常被忽略的一点:Bedrock 的 web/ 是真实 webroot,Nginx/Apache 必须指向它,而不是项目根目录;且 WP_HOME 和 WP_SITEURL 必须设成生产域名,留空或写 localhost 会导致后台菜单、媒体链接全部错乱。


















