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。