composer怎么安装WordPress_composer管理WordPress插件方法

2次阅读

不能。wordpress 官方不提供 composer install 可直接安装的核心包,推荐使用 johnpbloch/wordpress;插件需配置 wpackagist 仓库和 composer/installers 映射路径至 wp-content/plugins/。

composer怎么安装WordPress_composer管理WordPress插件方法

composer install 能不能直接装 WordPress 核心

不能。WordPress 官方不提供 composer/install 可直接拉取的稳定版核心包(如 wordpress/wordpress 是社区维护的镜像,非官方支持)。直接运行 composer create-project wordpress/wordpress 会失败或拉到空壳,因为官方未将核心打包为 Composer 可识别的 type: project 包。

正确做法是用 wp-cli 或手动下载 + composer require 管理依赖,把 WordPress 当作「项目根目录下的一个依赖」来组织,而不是靠 Composer 自动安装整个站点。

  • 推荐使用 johnpbloch/wordpress —— 这是目前最稳定的第三方 WordPress 核心包,自动同步官方发布,type: webroot,专为 Composer 集成设计
  • 不要用 wordpress/wordpress(已弃用)或 roots/wordpress(仅限 Bedrock 架构,强约定目录结构)
  • 执行 composer require johnpbloch/wordpress 后,核心文件默认放在 vendor/johnpbloch/wordpress,需额外配置 Web 服务器指向 web/public/ 目录

怎么用 composer require 安装 WordPress 插件

绝大多数插件已发布到 Packagist,只要作者提交了 composer.json 并设对 type: wordpress-plugin,就能直接 require

例如安装 advanced-custom-fields-pro(需 license key)或开源插件 query-monitor

composer require wpackagist-plugin/query-monitor

注意:wpackagist-plugin/ 是 WPackagist 提供的自动同步命名空间,不是官方源,但覆盖超 5 万款插件。

  • 必须先在 composer.json 中添加仓库配置:"repositories": [{"type": "composer", "url": "https://wpackagist.org"}]
  • 插件实际安装路径默认为 wp-content/plugins/,但 Composer 不会自动创建该目录 —— 你得自己确保路径存在,或用 installer-paths 自定义(见下一条)
  • 有些插件(如 woocommerce)有子依赖,require 后可能触发额外 autoload,检查 vendor/autoload.php 是否被正确引入

如何让 composer install 插件到 wp-content/plugins 而不是 vendor/

Composer 默认把所有包装进 vendor/,但 WordPress 插件必须出现在 wp-content/plugins/ 才能被识别。靠 composer/installers 插件重定向安装路径。

先装基础支持:

composer require composer/installers

再在 composer.jsonextra 段声明路径映射:

"extra": {   "installer-paths": {     "wp-content/plugins/{$name}/": ["type:wordpress-plugin"],     "wp-content/themes/{$name}/": ["type:wordpress-theme"]   } }
  • 这个配置只对声明了 "type": "wordpress-plugin" 的包生效,不是所有插件都规范填写了 type,遇到不生效的包,查它的 composer.json 源码确认
  • {$name} 是包名(如 wpackagist-plugin/akismet → 目录为 wp-content/plugins/akismet/),不是插件显示名
  • 如果项目已有 wp-content 目录且权限受限,composer install 可能因写入失败中断,建议提前 chown 或用 sudo(不推荐生产环境)

为什么 composer update 后插件没更新到 wp-content 下

常见现象:改了 composer.json 里的插件版本号,运行 composer update wpackagist-plugin/seo-by-rank-math,但 wp-content/plugins/ 里文件没变。

根本原因是:Composer 的安装路径逻辑只在 installupdate **首次写入**时触发;如果目标目录已存在同名文件夹,它默认跳过复制(尤其当 installer-paths 规则匹配但目录非空时)。

  • 安全起见,Composer 不会覆盖已有插件目录 —— 即使你删了 composer.lock,它也只更新 vendor/composer.lock,不动 wp-content
  • 临时解法:手动删掉 wp-content/plugins/插件名,再跑 composer update
  • 长期解法:加脚本钩子,在 post-update-cmd 里用 rsynccp 强制同步(但要注意排除 .gitvendor/ 等敏感子目录)
  • 更稳的做法是把 wp-content 放进 Git 忽略,每次部署走 composer install --no-dev + 清空插件目录 + 重装,避免本地残留干扰

实际用起来,最易卡住的是路径映射和已有文件冲突。别指望 Composer 像 wp-admin 那样点一下就更新,它本质是依赖管理工具,不是 WordPress 部署引擎。

text=ZqhQzanResources