wecodemore/wp-downloader

一个Composer插件,可从官方仓库下载WordPress版本压缩包。

安装: 307

依赖者: 0

建议者: 0

安全: 0

星标: 8

关注者: 8

分支: 4

开放问题: 1

类型:composer-plugin

1.1.0 2017-05-15 11:33 UTC

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。