如何使用 Composer 安装 WordPress:分步安装指南

已发表: 2023-02-28

简介:为什么要使用 Composer base WordPress?

与任何其他应用程序一样,当您可以确保代码及其依赖项的可重复构建和可提交更新时,您的 WordPress 站点是最安全的。 您的基础架构通过一组配置文件提交,这些配置文件指定您要使用的 PHP 和 MariaDB 版本。 这是确保您的项目在开发新功能时保持可重现性的最佳方式。

WordPress 核心,加上它的主题和插件,理想情况下应该以相同的方式工作,但通常情况并非如此。 WordPress 管理面板提供一键式按钮,可在所有这些组件过时或以其他方式希望对文件系统进行写入访问以在运行时进行配置更改时更新所有这些组件。 然而,以这种方式发展是有其后果的。

首先,您并不总是在运行时对文件系统具有写访问权。 因此,依赖于这种更新和配置更改的机制对于许多托管解决方案来说是完全受限的。 另一方面,如果您在当前托管的运行时确实具有写访问权限,则安装新模块或主题会带来不小的安全风险(当来源未知时)。

但是,也许最重要的是,在运行时更新 WordPress 可以将站点状态与存储库中的代码分离。 一位同事在他们的项目的本地克隆上开发新功能很可能是实时站点背后的完整版本。 作为此工作流程的结果,您可能会引入具有未知(和未经测试)后果的错误。

使用 Composer 的优势

鉴于上述事实,使用 Composer 管理您的 WordPress 站点具有明显的优势。 首先,它允许您在提交的文件 (composer.lock) 中明确定义您的依赖项。 这个锁定文件是在安装依赖项时从更具描述性的依赖项约束列表 (composer.json) 生成的,并且它成为项目提交历史记录的一部分。 从那时起,任何新分支都将从相同的依赖项集合开始工作,直到精确的提交哈希。 在这一点上,谁为项目做出贡献甚至部署在哪里都无关紧要——它对任何地方的每个人都是相同的代码。

Composer 还消除了将大量外部代码提交到您的存储库的需要。 对于 WordPress,不使用 Composer 通常需要您将主题的所有代码,甚至是 WordPress 核心和插件本身的所有代码提交到您自己的项目中。 除了使存储库变得不必要的大和克隆速度变慢之外,更新这些副本成为一种杂耍行为,没有人需要处理。

使用 Composer,您可以向项目添加和更新依赖项,然后锁定它们的确切版本,以便每个新分支都获得相同的更新。 如果更新是在运行时在已部署的站点上执行的,您将必须记住先进行 git pull。

使用 Composer 安装 WordPress 核心

同样,使用 Composer 使您不必将所有 WordPress 提交到您的存储库,因为您可以将其添加为依赖项。 有几种方法可以做到这一点(比如 Bedrock),这取决于你想为你的配置和项目结构做出多少假设。 最简单的方法是使用 John Bloch Composer fork 将安装程序添加到您的 WordPress 构建中:

 $ composer 需要 johnpbloch/wordpress-core-installer
$ composer 需要 johnpbloch/wordpress-core

上面的命令将创建一个 composer.json 文件并在 WordPress 目录中安装 WordPress 核心。 composer.json 看起来像这样

{
    “要求”: {
        "johnpbloch/wordpress-core-installer": "^2.0",
        “johnpbloch/wordpress-core”:“^6.1”
    },
    “配置”:{
        “允许插件”:{
            "johnpbloch/wordpress-core-installer": true
        }
    }
}

我们在 WordPress 文件夹中有 WordPress 核心。 但是我们需要将 index.php 复制到 WordPress 目录之外,以便我们可以将 Web 服务器指向根目录。

使用 Composer 完全管理 WordPress ,我们需要为 wp-content 使用不同的目录,而不是默认目录 WordPress/wp-content。

让我们在项目的根目录中创建一个名为 wp-content 的新目录。

从 WordPress 文件夹中复制 index.php 一次。 我们需要更改我们的 WordPress 目录所在的 wp-blog-header.php 文件的位置。

更改后,index.php 将如下所示

<?php 
定义('WP_USE_THEMES',真);
要求(目录名(__FILE__)。'/wordpress/wp-blog-header.php');

我们需要在根目录中创建一个 .htaccess 文件,内容如下:

 # 开始 WordPress
<IfModule mod_rewrite.c>
重写引擎开启
重写基础 /
重写规则 ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
重写规则。 /index.php [L]
</IfModule>
# 结束 WordPress

让我们继续复制示例 wp-config.php 文件,然后添加以下代码:

 $domain = 'mydomain.com;
define('WP_SITEURL', "https://{$domain}/wordpress");
define('WP_HOME',"https://{$domain}");
$httpHost = isset($_SERVER['HTTPS_HOST']) ? $_SERVER['HTTPS_HOST'] : $域名;
define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' );
define( 'WP_CONTENT_URL', 'https://' . $httpHost . '/wp-content' );
/** WordPress 目录的绝对路径。 */
如果 ( !defined('ABSPATH') ) {
    define('ABSPATH', dirname(__FILE__) . '/wordpress');
}

我们在 ABSPATH 中添加了 WordPress,因为 WordPress 核心位于 /WordPress
由于 wp-config.php 文件包含敏感数据; 我们不会通过创建 .gitignore 文件将其提交到我们的存储库:

 /wp-config.php
/WordPress/
/wp-内容/
/小贩/

WordPress、wp-content 和 vendor 目录也需要被忽略,以便我们将它们也添加到 .gitignore 文件中。

注意:如果您想为 wp-content 添加不同的命名约定,则需要更改 wp-content 目录。

我们的项目根目录应该是这样的

.git
.gitignore
作曲家锁
作曲家.json
小贩
wp-config.php
索引.php
WordPress的

您需要创建一个数据库并更改 wp-config.php 中的详细信息。 您的 WordPress 网站将被称为“mydomain.com”,WordPress 后端将可通过 mydomain.com/wordpress/wp-admin 访问

从 WordPress 存储库添加插件和主题

默认情况下,Composer 只会查看 packagist.org 存储库。 但它不包含 WordPress 插件和主题。

为了能够引入 WordPress 插件和主题,您需要将 Composer 指向 wpackagist.org 存储库。 您可以通过将此配置块添加到您的 composer.json 文件中来执行此操作:

 “存储库”:[
  {
    “类型”:“作曲家”,
    “网址”:“https://wpackagist.org”,
    “仅有的”: [
      “wpackagist-插件/*”,
      “wpackagist-主题/*”
    ]
  }
],

我们还需要告诉 Composer 在哪里放置插件和主题。 这涉及在 composer.json 中添加更多配置:

 “额外的”: {
        “安装程序路径”:{
            “wp-content/mu-plugins/{$name}/”:[
                “类型:wordpress-muplugin”
            ],
           “wp-content/plugins/{$name}/”:[
                “类型:wordpress插件”
            ],
           “wp-content/themes/{$name}/”:[
                “类型:wordpress 主题”
            ]
        }
    }

有了它,您现在可以使用 composer require 命令从官方存储库安装任何插件或主题,就像我们安装 WordPress 所做的那样。

# 要安装插件,请使用以下格式:

 作曲家需要“wpackagist-plugin/:”

# 要安装主题,请使用以下格式:

 作曲家需要“wpackagist-theme /:”

版本约束很复杂,但可能要记住的最简单形式是使用 * 通配符。 要使用 2.x 版安装我们的 WP Migrate 插件的免费版本,您需要运行:

composer require "wpackagist-plugin/wp-migrate-db:2.*"

如果你总是希望你的更新让你获得最新版本,你可以使用 * 作为版本约束:

composer require "wpackagist-plugin/wp-migrate-db:*"

第一次运行这样的命令时,系统可能会询问您是否要“信任‘composer/installers’来执行代码”。 这样做是安全的,但请注意,这确实会让 Composer 在您的计算机上运行代码。

如果一切顺利,您应该安装插件(但未激活)。 我还建议此时将您的更改提交给 Git。

添加自定义或第三方插件和主题

如果您想要存储库中的插件和主题,这一切都很好。 但是,如果您想添加 wordpress.org 存储库中没有的第三方插件或您自己的自定义代码怎么办? WordPress 目录不在 Git 中,那么你如何对自己的东西进行版本控制?

一些主题和插件作者支持他们的插件的自定义存储库。

并且某些主题和插件不允许为其插件使用任何存储库,例如付费插件。

但如果这不适用,那么这里的技巧是使用 .gitignore 文件有选择地取消忽略特定目录,并将这些自定义插件和主题添加到 composer.json 中。

我们也可以将这些插件放在另一个目录中,以便从 composer.json 安装它们。

由于我们忽略了 .gitignore 中的插件文件夹,因此我们需要创建另一个名为 dist 的文件夹,

在 dist 中,我们可以有付费插件和自定义插件,我们可以从 Composer 安装它们。

  • 分布/
    • 插件/
    • 主题/
    • mu插件/

我们需要将我们的自定义插件和主题复制到适当的文件夹中。

我们需要为 dist/plugins 中添加的每个插件创建 composer.json。

目前,我们有付费的 advanced-custom-fields-pro。 我们还想通过 composer 添加该插件,以实现一键安装和自动化部署。

我们必须从作者网站门户下载该插件并将该插件解压缩到 dist/plugins/advanced-custom-fields-pro 文件夹中。 并在具有以下内容的同一文件夹中创建 composer.json,

 {
   “名称”:“自定义插件/acf-pro”,

   "description": "高级自定义字段 PRO",

   “版本”:“5.12.2”,

   “类型”:“wordpress插件”,

   “要求”: {

       “作曲家/安装者”:“^1.0”,
       “johnpbloch/wordpress-core”:“>=5.4”
   }


}

我们可以在这里添加带有自定义前缀的版本和名称。 并在根 composer.json 文件中添加一些代码以在我们安装时调用此插件。

在“repositories”: 部分的最后添加以下代码,

 “存储库”:[
{
     “类型”:“路径”,

     "url": "dist/plugins/*",

     “选项”: {

       “符号链接”:假

     }

您在存储库部分还有其他条目。 要安装这个插件,我们有两种方法,首先在

“要求”: {
     “自定义插件/acf-pro”:“>=5.12.2”
}

或运行以下命令,它将安装插件并在 composer.json 中添加上述条目。

 $ composer 需要自定义插件/acf-pro

同理,我们可以安装主题和mu插件。

对于主题,我们需要添加主题文件夹位置,

 “存储库”:[
{
     “类型”:“路径”,

     "url": "dist/主题/*",

     “选项”: {

       “符号链接”:假

     }

您必须需要在自定义主题中添加 composer.json 以及名称和版本详细信息。 使用该名称,我们可以使用 composer require 命令安装主题。

综上所述

使用 Composer 是确保您的 WordPress 保持安全、最新和可重现的最有效方法。 Composer 允许开发人员轻松地在他们的项目中添加和更新依赖项并锁定他们的确切版本以确保每个新分支都使用相同的代码。

凭借这些优势,Composer 是管理 WordPress 项目、确保可重复构建和可提交更新的绝佳选择。

我们知道开始使用 Composer 可能有点让人不知所措。 如果您有任何疑问,请随时与我们联系。 我们在这里帮助您充分利用 WordPress 体验。

参考:

    • https://docs.platform.sh/guides/wordpress/composer.html
    • https://deliciousbrains.com/storing-wordpress-in-git/
    • https://time2hack.com/composer-wordpress-deployment/