在 WordPress 中使用 Composer
已发表: 2022-06-30WordPress 自 2003 年以来一直存在,并且已成为大多数希望创建网站的人的默认工具。 虽然它从作为一个博客引擎的根源已经走了很长一段路,但底层技术并没有像用户体验那样取得同样的飞跃。
WordPress 开发仍然围绕着 2003 年出现的许多标准进行。虽然由于所需的技术理解较低,这可以使人们更容易使用它,但这也意味着许多新的开发资源与 WordPress 开箱即用不兼容。
今天,我们将看看其中一种名为 Composer 的新工具。 让我们看看它如何融入您的 WordPress 工作流程,并讨论您可能想尝试它的原因。
什么是作曲家?
你写的每一段代码都有依赖关系。 如果您正在编写 WordPress 插件,那么您最大的依赖就是 WordPress 本身。 如果没有 WordPress 提供的核心功能,您的插件很可能根本没有用处。 在 WordPress 本身之外,您可能需要像 nusoap 这样的现代 SOAP 客户端来与基于 SOAP 的 API 交互。
过去,大多数人会简单地将 nusoap 的存储库复制到其插件的目录中,然后包含使用该库所需的文件。 这就是 Composer 可以介入并简化一些依赖项管理的地方。
Composer 是一个依赖管理器。 它专门设计用于轻松安装和管理依赖项。 如果您在团队中工作并希望确保团队中的每个成员都使用与他们的开发工作相同的库,这可能变得尤为重要。
Composer 的基础是一个 JSON 文件,其中详细说明了您已安装的依赖项以及您要使用的依赖项的哪些版本。 您可以在下面看到一个包含 nusoap 依赖项的基本示例。
{
“要求”: {
“econea/nusoap”:“^0.9.10”
}
}
当我在我的插件中运行 composer require econea/nusoap 时,它会为我安装 nusoap 并将其锁定到指定的版本。 在这种情况下,我使用的是 0.9.10 并将继续使用它,除非我告诉 Composer 升级依赖项。
与简单地下载和包含 nusoap 相比,这具有优势,因为我可以使用 composer update 来更新我的所有依赖项,而无需查看是否有更新并手动将它们下载到我的项目中。 Composer 接管此级别的资源管理。
开始使用作曲家
安装 composer 相当简单。
在 Windows 上
如果您使用的是 Windows,则提供了一个安装程序来简化该过程。 它将安装最新版本的 Composer 并使您的项目可以在全球范围内访问它。
Linux/Unix/macOS
在任何这些平台上,您都需要几个步骤来设置 Composer。 首先,运行下载 Composer 所需的命令并进行设置。
php -r “copy('https://getcomposer.org/installer', 'composer-setup.php');”
php -r “if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181'c;d 验证 7 } else { echo '安装程序损坏'; unlink('composer-setup.php'); } 回声 PHP_EOL;”
php 作曲家-setup.php
php -r “unlink('composer-setup.php');”
接下来,您将希望全局运行 Composer 以进行本地开发,因此我们需要调整默认安装以确保它在我们想要使用 Composer 的任何时候都可用。 您可以使用从刚刚下载 Composer 的同一目录执行以下命令将 Composer 移动到全局可用。
mv composer.phar /usr/local/bin/composer
升级作曲家
在 Windows 和 macOS 上,升级到最新版本的 Composer 所需要做的就是运行 composer self-update。 如果您使用的是 Linux/Unix,那么您需要运行 sudo apt update && upgrade 以便您的系统检查最新版本,然后您可以运行 composer self-update 来获取最新版本。
现在你已经设置好了,让我们看看使用 Composer 安装 WordPress。
使用 Composer 安装 WordPress
如果您想使用 Composer 管理整个站点,该怎么办? 首先,你需要确定WordPress是项目的依赖还是项目的核心? 是的,有点脑筋急转弯。
WordPress 可以被视为项目的依赖项,因为您的客户的最终目标不是安装 WordPress。 他们想要一个商店或一个博客,这取决于你安装 WordPress。 这就是像 Roots 这样的项目在其基于 Composer 的 Bedrock WordPress 设置中所采取的立场,称为 Bedrock。
使用 Bedrock 意味着您不必告诉 Composer WPackagist,因为它已经设置好了。 如果您希望使用 Composer 管理整个站点,我建议您从这里开始。
要安装 Bedrock,请运行以下命令。
作曲家创建项目根/基岩
这将为您提供以下文件结构。
├── composer.json
├── .env
├── 配置
│ ├── application.php
│ └── 环境
│ ├── development.php
│ ├── staging.php
│ └── production.php
├── 供应商
└── 网络
├── 应用
│ ├── mu-plugins
│ ├── 插件
│ ├── 主题
│ └── 上传
├── wp-config.php
├── index.php
└── wp
这与标准的 WordPress 设置非常不同。 首先,您的 composer.json 文件位于安装的根目录。 这是您将看到您的 Composer 配置的地方。
您的 .env 文件是您可以存储不同数据库配置的地方。 这是必需的,因为您的本地站点和实时站点将具有不同的数据库密码和用户名。 默认的 wp-config.php 文件将理解您放入 .env 文件中的变量,因为 Bedrock 使用这些变量而不是数据库连接信息中的硬编码。
你的 .env 文件应该在你的 Git 存储库中被忽略。 当您配置一个新站点时,您将使用所需的数据库配置信息向其中添加一个新的 .env 文件。
您需要在此处设置一些其他变量才能启动 Bedrock,这些变量都在其文档中进行了详细说明。
在 config 文件夹下是您将使用的环境的不同默认配置。 在开发中,这会打开错误报告,在您的生产环境中,它可以确保错误记录不会干扰您网站的顺利运行。
以 Bedrock 为基础,您现在可以使用 Composer 通过 WPackagist 安装您的 WordPress 插件。
WPackagist 是 WordPress 主题和插件存储库的镜像。 这是必需的,因为默认情况下大多数插件和主题都不适用于 Composer 安装。 镜像为每个插件添加了所需的文件,以便可以使用 Composer 来管理插件。
如果你想在基于 Bedrock 的 WordPress 安装中安装 WooCommerce,你需要首先需要 WooCommerce,composer 需要 wpackagist-plugin/woocommerce,然后你需要告诉 Composer 安装依赖项,composer install。
现在您可以转到 WordPress 安装的管理区域并激活 WooCommerce 并开始构建您的网站。 要在新版本发布时更新 WooCommerce,或更新 WordPress,您需要运行 composer update。
这是基于 Composer 的项目可能会遇到一些麻烦的地方。 如果您通过 WordPress 管理员运行更新,那么 Composer 期望的内容与 WordPress 安装的内容不匹配。 如果您要使用 Composer,请坚持使用它作为您的更新工具,不要通过 WordPress 管理员工作。
什么时候应该使用 Composer ?
我相信你们中的许多人都在问为什么 Composer 是 WordPress 开发的如此出色的工具。 WordPress 在构建时并未考虑到 Composer,因此要使用它,您必须跳过一些障碍才能使其正常工作。
对于插件和主题开发人员来说,Composer 可以更轻松地处理需要从更广泛的 PHP 生态系统引入的依赖项。 对于 WordPress 开发人员来说,这个论点不太清楚。 有些人喜欢像 Roots 一样使用 Composer 来管理他们的整个站点。 这可以让 Git 管理的文件更少,但这对我来说似乎从来都不是一个令人信服的案例。
我喜欢的情况是 Composer 可以很容易地为不同的环境建立不同的依赖关系。 然后,您可以使用您的部署过程在您的环境中部署这些依赖项,而不必手动管理它们。
作为开发人员,您还需要考虑客户的需求。 如果他们没有开发团队来长期管理网站,那么他们可能会遇到非标准 WordPress 安装的问题。 在某些情况下,他们的主机可能会告诉他们支持不可用,因为他们没有使用正常的方式安装和使用 WordPress。 当您为客户服务时,您总是需要平衡您使用的酷技术与客户可以长期处理的技术。
仅出于这个原因,我不在我的全站点项目中使用 Composer。 我的客户将多年来每天都在管理他们,我不想设置任何额外的障碍。 我们都希望他们的网站在未来几年能够顺利运行。
如果您希望使用现代技术升级您的 PHP 技能,那么您当然应该看看 Composer 如何适合您的 WordPress 工作流程。