wecodemore / wp-downloader
一个Composer插件,可从官方仓库下载WordPress版本压缩包。
Requires
- php: >=5.4
- composer-plugin-api: ^1.1
This package is auto-updated.
Last update: 2024-09-14 12:57:16 UTC
README
一个Composer插件,提供了一种零成本的方式解决一个非常特定的问题:使用Composer在WordPress默认的/wp-content文件夹内部安装WordPress插件和主题。
为什么?
使用Composer同时管理WordPress核心和插件/主题,并告诉Composer将插件和主题放在WordPress默认的/wp-content文件夹内部,没有问题是不可能的。
简而言之,每次安装或更新WordPress时,整个WordPress文件夹(包括/wp-content目录)都会被删除,因此其中的插件和主题包也会丢失。
我已经探索了不同的方法来解决此问题,但似乎最简单的方法就是避免将WordPress视为一个常规的Composer包,因为——猜猜看——它不是一个常规的Composer包。
感谢许多人的努力,如今我们有了使用Composer管理整个WordPress网站的方法,这在大多数情况下都是可行的。
这个插件是为了解决那些不属于“大多数”情况的特定情况。
- 它不是作为Composer的通用WordPress安装程序设计的
- 它没有考虑(也不会考虑)所有可能遇到的其他边缘情况。
它是如何工作的?
WordPress将从wordpress.org提供的zip发布版下载,并解压到指定的文件夹。
当运行Composer更新WordPress时,旧安装文件将被删除,但/wp-content目录和wp-config.php(如果存在于WP根目录)不会被更改。
如果Composer被设置为在/wp-content中放置插件和主题,它们将在需要时通过Composer进行更新。
用法
在root composer.json中require wecodemore/wp-downloader。
就这样。
有一些可选的配置,下面将进行解释。
配置
插件支持在composer.json中放置一个wp-downloader对象(需要放在根包的extra对象中),允许配置
- WordPress的目标路径
- WordPress期望的版本
- 是否下载“无内容”的WordPress存档或完整版本
示例
{
"name": "you/your-awesome-website",
"type": "project",
"require": {
"wecodemore/wp-downloader": "^1.0"
},
"extra": {
"wp-downloader": {
"version": ">=4.5",
"no-content": true,
"target-dir": "public/wp"
}
}
}
以上所有设置都不是强制的,实际上,wp-downloader对象可能根本不存在。
所有设置都有默认值,目标目录和WordPress版本也可以以不同的方式设置。
配置WordPress安装路径
如上图所示,目标路径可以通过extra.wp-downloader.target-dir设置来设置。
然而,插件还支持在extra.wordpress-install-dir中设置路径(例如,也被johnpbloch/wordpress-core-installer使用)。
因此,如果使用了该设置,则将使用那里的路径,除非在extra.wp-downloader.target-dir中放置不同的路径来覆盖。
配置WordPress版本
在上面的示例中,下载的WordPress版本是通过extra.wp-downloader.version配置设置的。
您可以将任何Composer可以理解的内容放入其中。
好吧,实际上不是任何东西,因为这个包仅适用于稳定版本。
此外,还可以使用关键字latest,正如您所猜想的,这将下载最新版本的WordPress。
设置WordPress版本下载的另一种方法。
如果根composer.json需要任何类型的wordpress-core包,该要求中使用的版本将被“发现”并由该插件使用。
例如,如果一个composer.json包含
{
"name": "you/your-awesome-website",
"type": "project",
"require": {
"wecodemore/wp-downloader": "^1.0",
"johnpbloch/wordpress": ">=4.6"
},
"extra": {
"wordpress-install-dir": "public/wp"
}
}
wp-downloader将读取johnpbloch/wordpress的版本,并将下载与该包要求兼容的版本(例如,上述版本4.6或更高版本)。
此功能仅适用于在root composer.json中需要WordPress核心包的情况:作为二级依赖关系需要的核心包将不会被读取,并且如果没有提供版本(无论是通过包还是通过wp-downloader对象),则将下载最新的WordPress版本。
另外请注意,使用上述示例,WP安装文件夹将是public/wp,它从wordpress-install-dir设置中读取。
请注意:使用上面提到的类似composer.json将不会从所需包(johnpbloch/wordpress)中安装WordPress。
实际上,wp-downloader阻止了类型为wordpress-core的包通过Composer安装,否则这个插件的唯一存在理由就会被打败。
无内容设置
默认情况下,wp-downloader下载WordPress存档的“无内容”版本。
当使用Composer管理整个网站时,通常没问题,因为主题和插件是通过Composer拉取的。
但是,如果有人想使用默认主题,则需要单独使用Composer拉取,或者,可以通过将extra.wp-downloader.no-content设置设置为false来指示wp-downloader下载完整的WordPress存档。
注意事项
即使wp-downloader可以在WP插件和主题放置在WordPress文件夹之外时使用,但在这些情况下实际上没有使用它的好处。
建议仅在插件和主题真正需要放在WordPress文件夹中时使用此插件。
主要插件的注意事项包括
- 下载的WordPress zip文件不会进入Composer缓存,因此每次需要时都需要从存储库下载。
- 由于它不是Composer包,WordPress版本不会写入到
composer.lock文件中。因此,确保服务器上WP版本完全相同的方法是使用精确的版本要求。 - 此包不与trunk或WordPress开发版本一起工作。如果您需要为WordPress核心开发或测试与trunk的东西,并且想使用Composer,那么请使用Composer而不是此插件来下载WordPress。
常见问题解答(FAQ)
我如何告诉Composer将我的插件/主题放置在WordPress
/wp-content文件夹中?
- 这不是此插件的功能。更改特定插件主题的路径是官方Composer插件“Composer installers”提供的功能。可以通过要求
"composer/installers"来安装它,并在composer.json中需要“installer-paths”设置。请参阅插件文档
我要求此插件,现在网站只显示WSOD!
- 默认情况下,此插件下载WordPress存档的“无内容”版本。这意味着不会下载任何默认主题。如果您使用默认主题(或其中一个的子主题),您将无法看到网站的前端。请参阅上面的“无内容设置”部分。
您希望支持[在此处插入疯狂的边缘情况]吗?
- 不,我不。
您希望实现[在此处实现功能]吗?
- 可能不会。
我发现了一个bug,你能修复它吗?
- 我可以,但没有保修时间。请考虑贡献是受欢迎的,PR是开放的。
我使用了一个固定的所需版本为WP,但它不起作用。为什么?
- 请检查URL
https://downloads.wordpress.org/release/wordpress-{$version}-no-content.zip是否存在。如果不存在,但https://downloads.wordpress.org/release/wordpress-{$version}.zip存在,则将no-content设置为false。
我使用的包 [此处填写包名] 需要WordPress包,但该插件不会自动发现需要下载哪个WP版本,总是下载最新版本。
- 此插件会自动从只要求在 根目录
composer.json中指定的所需WordPress包中检测WordPress版本。如果WordPress是从您要求的包中需要的,那么它将不起作用。
这个插件与WP Starter兼容吗?
- 是的,兼容。
许可证
MIT。