Установка плагинов WordPress через Composer: подробное руководство

УСТАНОВКА ПЛАГИНОВ WP ЧЕРЕЗ COMPOSER

В этой статье мы обсудим, как устанавливать плагины для WordPress с помощью Composer. Обсуждаемые инструкции включают плагины из репозитория WordPress, а также плагины, разработанные на GitHub и добавленные в стандартный каталог пакетов PHP.

Для плагинов из репозитория WordPress существует отдельный репозиторий wpackagist.org — это копия каталога плагинов WP, созданная специально для удобной установки плагинов через Composer (не путать с packagist.org).

Примечание: Все описания ниже предполагают, что Composer уже установлен.

УСТАНОВКА ИЗ WPACKAGIST.ORG

Сначала необходимо создать файл composer.json. Обычно он создается в корневом каталоге проекта. Проверьте схему (возможные параметры) этого файла в документации Composer.

Предположим, мы создали его с такими параметрами:

{
  "name": "My Project",
  "description": "Ещё один проект.",
  "license": "proprietary",
  "authors": [
    {
      "name": "Имя Автора",
      "email": "[email protected]"
    }
  ]
}

Поскольку wpackagist.org не является packagist.org (стандартный репозиторий), его нужно зарегистрировать в файле composer.json, чтобы Composer знал, что есть другой репозиторий, где можно найти пакеты для установки:

{
  "name": "My Project",
  "description": "Ещё один проект.",
  "license": "proprietary",
  "authors": [
    {
      "name": "Имя Автора",
      "email": "[email protected]"
    }
  ],
  "repositories": [
    {
      "type": "composer",
      "url": "https://wpackagist.org"
    }
  ]
}

Теперь в параметр require нужно добавить имя плагина, который мы хотим установить. Также следует указать параметр extra.installer-paths — путь к папке плагинов WP, куда мы хотим, чтобы Composer установил плагины.

Например, давайте установим плагин redis-cache:

{
  "name": "My Project",
  "description": "Ещё один проект.",
  "license": "proprietary",
  "authors": [
    {
      "name": "Имя Автора",
      "email": "[email protected]"
    }
  ],
  "repositories": [
    {
      "type": "composer",
      "url": "https://wpackagist.org"
    }
  ],
  "require": {
    "wpackagist-plugin/redis-cache": "^2.4.4",
    "composer/installers": "*"
  },
  "extra": {
    "installer-paths": {
      "path/to/wp-content/plugins/{$name}": [
        "type:wordpress-plugin"
      ]
    }
  },
  "config": {
    "allow-plugins": {
      "composer/installers": true
    }
  }
}

Все плагины из репозитория wpackagist.org имеют тип wordpress-plugin. В параметре installer-paths мы указываем, что все плагины с этим типом должны устанавливаться в указанную папку, а не в стандартную папку Composer vendor.

Также устанавливаем пакет composer/installers, и в параметре config.allow-plugins разрешаем его загрузку вместе с Composer, чтобы расширить его функциональность.

Пакет composer/installers — это официальный пакет Composer, который позволяет указывать каталог, отличный от vendor, для установки пакетов. Однако он изменяет каталог установки только для ограниченных типов пакетов. Для WordPress это:

  • wordpress-plugin
  • wordpress-theme
  • wordpress-muplugin
  • wordpress-dropin

Теперь, чтобы установить плагин, нужно выполнить команду:

$ composer install

Особенности версий плагинов из wpackagist.org

wpackagist.org копирует репозиторий плагинов WordPress и не заботится о сохранении предыдущих версий. Поэтому наличие или отсутствие конкретной версии плагина ложится на плечи разработчика. Разработчик должен поддерживать так называемые теги (каталог тегов SVN). То есть, при публикации каждой версии разработчик должен обеспечить, чтобы опубликованная версия плагина была создана и осталась в каталоге тегов в будущем.

Например, рассмотрим плагин wp-sitemap-page. Допустим, мы указали конкретную версию 1.6 (это была последняя версия на момент установки плагина):

"require": {
  "wpackagist-plugin/wp-sitemap-page": "1.6"
}

Спустя время появилась новая версия 1.7 плагина. Теперь, если мы запустим composer install в среде, где файлы этого плагина отсутствуют (например, при развертывании на сервере разработки или в продакшн), установится версия 1.7, несмотря на то, что в composer.json явно указано, что нам нужна версия 1.6.

Это происходит потому, что wpackagist.org просто копирует репозиторий WP. Если мы заглянем в каталог тегов, мы не найдем требуемую версию 1.6, и, следовательно, не будет откуда её загрузить, и будет загружена последняя версия из каталога /trunk.

УСТАНОВКА ИЗ PACKAGIST.ORG

Все делается аналогично, с единственным отличием — нам не нужно указывать дополнительный репозиторий, и автор плагина должен добавить плагин в каталог packagist.org.

Например, тот же плагин redis-cache можно установить с такой конфигурацией в composer.json:

{
  "name": "My Project",
  "description": "Ещё один проект.",
  "license": "proprietary",
  "authors": [
    {
      "name": "Имя Автора",
      "email": "[email protected]"
    }
  ],
  "require": {
    "rhubarbgroup/redis-cache": "^2.4.4",
    "composer/installers": "*"
  },
  "extra": {
    "installer-paths": {
      "path/to/wp-content/plugins/{$name}": [
        "type:wordpress-plugin"
      ]
    }
  },
  "config": {
    "allow-plugins": {
      "composer/installers": true
    }
  }
}

Недостаток такого подхода в том, что не всегда понятно, что пакет rhubarbgroup/redis-cache является плагином для WP, а не PHP-пакетом. Однако он лишён другого недостатка, описанного выше (версионирование работает более надежно).

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *