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

直接 composer require wordpress/plugin-name 或 composer require laravel/package-name 会失败——不是命令写错,而是你没告诉 Composer 去哪找、怎么装、装到哪。WordPress 插件不在 Packagist,Laravel 的部分扩展也不走官方源;两者都需要显式配置仓库、安装器和路径映射,否则包只会躺在 vendor/ 里,系统根本看不到。
为什么 composer require wpackagist-plugin/xxx 报 “Package not found”?
这不是拼写错误,是 Composer 根本没去 https://wpackagist.org 查。它默认只连 packagist.org,必须手动加仓库配置。
-
composer.json的repositories数组里要加一条:{"type": "composer", "url": "https://wpackagist.org"}—— 少个s、漏https://或写成vcs类型都会失效 - 包名必须严格用
wpackagist-plugin/{slug}格式,比如classic-editor插件的 slug 就是https://wordpress.org/plugins/classic-editor/URL 最后一段,复制页面上显示的完整包名,别手写 - 查不到?说明该插件还没被 WPackagist 同步,或已被清理(如旧版
polylang-pro可能不存在,但polylang有)
为什么插件装进 wp-content/plugins/ 了,后台却看不到?
路径对了只是第一步。WordPress 要识别插件,还得满足运行时条件。
安全的随机密码生成器。支持自定义长度、字符类型(大写/小写字母、数字、特殊符号),排除相似字符,批量生成。纯 Python 标准库,无需 API 密钥。
-
wp-content/plugins/目录必须真实存在,且 Web 进程用户(如www-data)有读取权限(至少755) - 插件主文件(如
wp-content/plugins/akismet/akismet.php)必须含标准插件头注释,否则 WordPress 不当它是插件 - Composer 只负责文件落地,不激活插件 —— 激活得用
wp plugin activate akismet(WP-CLI)或后台手动点启用
为什么 Laravel 包装进 vendor/ 却没注册服务提供者?
Laravel 的包(如 spatie/laravel-permission)通常自带 ServiceProvider,但前提是你的应用能自动发现或手动注册它。
- 检查该包的
composer.json是否含"extra": {"laravel": {"dont-discover": false}}—— 若设为true,Laravel 会跳过自动发现 - 确认
config/app.php里是否手动添加了providers数组项;新版 Laravel(9+)依赖自动发现,但若项目禁用了discovery,就得自己写 - 运行
php artisan config:clear和php artisan cache:clear,避免旧缓存干扰服务提供者加载
installer-paths 映射失效,插件还是进了 vendor/
映射不生效最常见原因不是配置漏了,而是驱动没装或没触发。
- 先执行
composer require composer/installers:^2.0—— 这不是可选依赖,是必需扩展,^1.0版本不支持wordpress-plugin类型 -
extra.installer-paths的键值必须匹配实际路径结构:例如 WordPress 在项目根目录,就写"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 自动生成的包都带,但私有包或手写包容易漏
最容易被忽略的是:Composer 只管文件落地,不校验插件头、不检查权限、不激活、不刷新 WordPress 插件列表缓存。这些都得你手动补上,否则“装了=没装”。

















