Composer安装WordPress教程 使用Bedrock管理WP项目【进阶】

5次阅读

composer无法直接安装wordPress核心,因官方未发布composer包;应使用Bedrock模板通过create-project初始化,并用composer管理WP核心、插件及主题依赖。

Composer安装WordPress教程 使用Bedrock管理WP项目【进阶】

Composer 本身不安装 wordpress,它只安装符合 Composer 规范的 php 包;而默认的 WordPress 官方发布包不是 Composer 包——所以直接 composer require wordpress/wordpress 会失败或装错东西。真正可行的路径是:用 Bedrock 项目结构 + composer create-project 初始化,再通过 composer install 管理依赖(含 WP 核心、插件、主题)。

为什么不能直接 composer require wordpress/core

WordPress 官方没有发布 wordpress/core 这个 Composer 包;社区维护的 johnpbloch/wordpressroots/wordpress 才是实际可用的镜像包,且它们只提供核心文件,不含 wp-config.php 和 webroot 结构。Bedrock 正是为补全这套缺失的工程化能力而生——它定义了目录约定、环境配置方式和自动加载逻辑。

  • johnpbloch/wordpress 是最接近官方发布的镜像,更新及时,但无内置钩子
  • roots/wordpress 是 Bedrock 官方绑定的变体,支持 wp core download 后自动 symlink,但版本同步略滞后
  • 直接 require 会导致 wp-content 与核心混在一起,破坏 Bedrock 的分离原则

composer create-project 初始化 Bedrock

这是唯一推荐的起点。Bedrock 本身是个模板项目,不是库,不能 require 进现有项目——否则 web/config/.env 等关键结构会缺失或错位。

  • 运行:composer create-project roots/bedrock my-wordpress-site
  • 完成后进入目录,cp .env.example .env 并填写数据库、密钥等
  • WP_HOMEWP_SITEURL 必须设为生产域名(如 https://example.com),不能留空或写 localhost,否则后台链接和媒体路径会出错
  • 不要手动修改 vendor/roots/wordpress 下的文件——所有定制应通过 wp-content 下的插件/主题完成

添加插件或主题时,必须用 composer require 而非手动复制

Bedrock 的 wp-content 是由 Composer 自动生成的:插件和主题的源码来自 Packagist 或自建 VCS 仓库,最终被软链或复制到 web/app/plugins/web/app/themes/。手动放文件进去,下次 composer install 会被清掉。

  • 装官方插件:composer require wpackagist-plugin/advanced-custom-fields-pro(需先加 wpackagist.org 为 repo)
  • 装私有主题:composer require myorg/my-theme:dev-main,并在 composer.json 中声明 "repositories" 指向 git URL
  • 若插件含 JS/css 构建流程,确保其 composer.json 里有 "type": "wordpress-plugin",否则 Bedrock 的自动加载器不会识别

wp-cli 在 Bedrock 中必须走 ./vendor/bin/wp

全局 wp 命令无法感知 Bedrock 的 .env 和目录结构,执行 wp plugin list 会报错 “Error: this does not seem to be a WordPress installation.”

  • 始终用项目内路径:./vendor/bin/wp plugin list --path=web/
  • 如果提示 Missing argument: --path,说明没传 --path=web/ ——Bedrock 的 webroot 是 web/,不是根目录
  • 运行 wp rewrite structure '/%postname%/' 前,先确认 web/.htaccess 可写,且 apache 已启用 mod_rewrite

最易被忽略的是环境变量加载时机:Bedrock 的 config/environments/production.php 会在 wp-settings.php 加载前生效,但如果你在 wp-config.php 里写了硬编码DB_NAME,就会覆盖 .env 的值——所有配置必须走 getenv()$_ENV,不能写死。

text=ZqhQzanResources