Установка кастомных WordPress плагинов (архивов) через Композер

Если у вас есть URL на кастомный WordPress плагин, например, премиум плагин, для которого не предусмотрено авто-обновление, а также вам нужно устанавливать его через Композер. То используя инструкцию ниже вы можете создать свой репозиторий для пакета и устанавливать его как обычно. Однако, тут есть свои нюансы, но об этом ниже.

Способ 1

В composer как я понял, нельзя создать свой кастомный пакет, а потом указать в какую конкретно папку мы хотим его установить. Это работает, но только для конкретных пакетных менеджеров. Подробнее о таком способе установки можно прочитать здесь.

Вариант с популярным инсталлером composer/installers.

{
	"require": {
		"mylocal/kama-breadcrumbs": "dev-master"
	},
	"repositories": [
		{
			"type": "package",
			"package": {
				"name": "mylocal/kama-breadcrumbs",
				"type": "wordpress-plugin",
				"version": "dev-master",
				"dist": {
					"url": "https://api.wp-kama.ru/upserver/download/kama-breadcrumbs/?key=LICENSE_KEY",
					"type": "zip"
				},
				"require": {
					"composer/installers": "*"
				}
			}
		}
	],
	"extra": {
		"installer-paths": {
			"path/to/theme/{$name}": [
				"mylocal/kama-breadcrumbs"
			]
		}
	}
}
  • LICENSE_KEY нужно заменить на ваш ключ (ищите в своем профиле wp-kama).
  • path/to/theme/ нужно заменить на путь куда нужно установить плагин.

ВАЖНО! Новые версии плагина не будут скачиваться автоматически при composer update. Чтобы она скачалась нужно удалить папку плагина. До тех пор пока папка плагина существует composer будет "думать" что все ОК, потому что версию пакета мы указываем сами в параметре "version": "dev-master".

Способ 2

Устанавливаем пакет mnsami/composer-custom-directory-installer, который расширяет базовый инсталлер композера и позволяет указать произвольную папку установки для типа package.

{
	"require": {
		"mnsami/composer-custom-directory-installer": "*",
		"mylocal/kama-breadcrumbs": "*"
	},
	"repositories": [
		{
			"type": "package",
			"package": {
				"name": "mylocal/kama-breadcrumbs",
				"version": "4.21",
				"dist": {
					"url": "https://api.wp-kama.ru/upserver/download/kama-breadcrumbs/?key=YOUR_LICENSE_KEY&ver=4.21",
					"type": "zip"
				}
			}
		}
	],
	"extra": {
		"installer-paths": {
			"path/to/theme/{$name}": [
				"mylocal/kama-breadcrumbs"
			]
		}
	}
}
  • LICENSE_KEY нужно заменить на ваш ключ (ищите в своем профиле wp-kama).
  • path/to/theme/ нужно заменить на путь куда нужно установить плагин.
  • Параметр ver - в URL параметре &ver=4.21 нужно указать нужную версию плагина.

    Параметр ver можно вообще не указывать, тогда будет скачиваться последняя версия, однако в этом случае лучше указать dev-master в чтобы явно было понятно, что устанавливается всегда последняя версия:

    "require": {
    	"mylocal/kama-breadcrumbs": "dev-master"
    }
    ...
    		"version": "dev-master",

ВАЖНО! Последняя версия не будет скачиваться автоматически при composer update, а она скачается только если удалить папку плагина. До тех пор пока папка плагина существует composer будет "думать" что все ОК, потому что версию пакета мы указываем сами в параметре "version": "dev-master".

Способ 3

При каждом composer update или composer install скачиваем последнюю (или указанную версию) плагина и перемещаем скаченные файлы в нужную папку:

{
	"require": {
		"mylocal/kama-breadcrumbs": "dev-master"
	},
	"repositories": [
		{
			"type": "package",
			"package": {
				"name": "mylocal/kama-breadcrumbs",
				"version": "dev-master",
				"dist": {
					"url": "https://api.wp-kama.ru/upserver/download/kama-breadcrumbs/?key=YOUR_LICENSE_KEY",
					"type": "zip"
				}
			}
		}
	],
	"scripts": {
		"post-update-cmd": [
			"rsync -av --delete vendor/mylocal/kama-breadcrumbs path/to/theme/ && rm -rf vendor/mylocal/kama-breadcrumbs"
		]
	}
}

path/to/theme/ вам нужно заменить на путь куда хотите переместить скаченный плагин.

Важно: Это НЕ будет работать на Windows бeз WSL.

Эта заметка встроена в: Установка через composer