直接 composer require wordpress/plugin-name 必然失败,因WordPress插件不在Packagist官方源,必须配置wpackagist.org仓库、composer/installers依赖及extra.installer-paths路径映射三者缺一不可。

直接 composer require wordpress/plugin-name 必然失败——WordPress 插件不在 Packagist 官方源里,必须走 https://wpackagist.org 镜像源,且要配对 composer/installers 和 installer-paths,否则插件只会躺在 vendor/ 下,WordPress 根本看不到。
为什么 composer require wpackagist-plugin/xxx 报错 “Package not found”?
这不是包名拼错,而是 Composer 根本没去 wpackagist.org 查。它默认只认 packagist.org,你得手动告诉它“去哪找”。
- 必须在项目根目录的
composer.json里显式添加repositories配置,type必须是composer(不是vcs或package) - URL 必须写全:
"url": "https://wpackagist.org",少个s或协议都无效 - 包名必须严格按
wpackagist-plugin/{slug}格式,比如classic-editor插件的 slug 就是 URLhttps://wordpress.org/plugins/classic-editor/里的最后一段,复制页面上显示的完整包名,别手写
installer-paths 映射不生效,插件还是进了 vendor/
映射失效最常见原因不是配置漏了,而是驱动没装或没触发。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先确认已执行
composer require composer/installers:^2.0—— 这不是可选依赖,是必需扩展 -
extra.installer-paths的键值必须匹配实际路径结构:例如你的 WordPress 根目录下是wp-content/plugins/,就写"wp-content/plugins/{$name}/": ["type:wordpress-plugin"];如果是 Bedrock 结构,路径就得是web/app/plugins/{$name}/ - 运行
composer install -v,看日志里是否出现WordPressInstaller::install—— 没这行,说明composer/installers根本没接管安装流程 - 检查目标插件包自身的
composer.json(比如vendor/wpackagist-plugin/akismet/composer.json),它必须含"type": "wordpress-plugin";WPackagist 自动生成的包都带,但私有包或手写包容易漏
插件装进 wp-content/plugins/ 了,后台却看不到
路径对了只是第一步,WordPress 要扫描并识别插件,还得满足运行时条件。
-
wp-content/plugins/目录必须真实存在,且 Web 进程(如 www-data、nginx)有读取权限(至少755) - 插件主文件(如
wp-content/plugins/akismet/akismet.php)必须包含标准插件头注释,否则 WordPress 不会把它当插件处理 - Composer 只管文件落地,不负责激活;需用
wp plugin activate akismet(WP-CLI)或后台手动启用 - 如果激活报
Plugin could not be activated because it triggered a fatal error,大概率是依赖未加载(如 ACF 插件在acf_add_local_field_group()调用前未初始化),跟 Composer 无关,得查 PHP 错误日志定位具体哪行出错
最容易被忽略的是:WPackagist 的版本号来自 WordPress.org 的 SVN 标签,不是 Git commit,所以 trunk 或无明确语义化版本的插件,composer require 会直接拒绝——你得查插件页的“Advanced View”,确认它有类似 12.3 这样的正式标签,再写 "^12.3"。

















