Вопрос или проблема
Я новичок в использовании Composer. Я пытаюсь использовать Composer, в данный момент, лишь для установки нескольких плагинов (я использую Docker + рецепт Lando для самой установки WordPress).
Моя структура директорий должна выглядеть следующим образом (с файлом composer на верхнем уровне и установкой WordPress, с обычной структурой файлов внутри, в подпапке ‘wordpress’)
app
|-- .lando.yml
|-- composer.json
|-- wordpress
| |-- wp-content
| | |-- plugins
Однако, когда Composer скачивает плагины, он создает директорию wp-content на верхнем уровне, как показано ниже:
app
|-- .lando.yml
|-- composer.json
|-- wordpress
|-- wp-content
| |-- plugins
Вот мой очень простой composer.json:
{
"name": "my/custom-wp",
"description": "Мой собственный WP",
"version": "1.0.0",
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
},
{
"type":"composer",
"url":"https://connect.advancedcustomfields.com"
}
],
"require": {
"wpackagist-plugin/safe-svg":"*",
"wpengine/advanced-custom-fields-pro": "*"
},
"config": {
"allow-plugins": {
"composer/installers": true
}
}
}
Я пробовал все сочетания этих свойств:
"extra": {
"wordpress-install-dir": "wordpress"
"wordpress-content-dir": "wordpress/wp-content"
}
…но каждый раз “wp-content/plugins/*” всегда добавляется в корневой каталог, а не в каталог “wordpress”. Кроме того, согласно документации, которую я читал, я думал, что в composer.json по умолчанию ищется директория “wordpress/wp-content” в корневом каталоге, так что даже если бы это работало (а они не работали) должны ли они вообще быть необходимыми, если я не использую собственную структуру? Что мне здесь не хватает?
Ответ или решение
Чтобы установить плагины WordPress с использованием Composer в указанную подкаталог, вы можете столкнуться с некоторыми проблемами в настройке вашей конфигурации composer.json
. Рассмотрим подробно, как правильно организовать структуру каталогов и настроить ваш composer.json
, чтобы плагины устанавливались в соответствующее место.
1. Структура каталогов
Ваша желаемая структура выглядит следующим образом:
app
|-- .lando.yml
|-- composer.json
|-- wordpress
| |-- wp-content
| | |-- plugins
Однако при установке плагинов Composer создает директорию wp-content
на верхнем уровне, что не соответствует ожидаемой схеме. Чтобы избежать этого, необходимо внести изменения в файл composer.json
.
2. Настройка composer.json
Чтобы заставить Composer устанавливать плагины в нужный подкаталог, вы должны воспользоваться дополнительными настройками в секции "extra"
файла composer.json
. Вот корректный пример настройки:
{
"name": "my/custom-wp",
"description": "My Custom WP",
"version": "1.0.0",
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
},
{
"type": "composer",
"url": "https://connect.advancedcustomfields.com"
}
],
"require": {
"wpackagist-plugin/safe-svg": "*",
"wpengine/advanced-custom-fields-pro": "*"
},
"config": {
"allow-plugins": {
"composer/installers": true
}
},
"extra": {
"installer-paths": {
"wordpress/wp-content/plugins/{$name}": ["type:wordpress-plugin"]
}
}
}
3. Объяснение настроек
-
installer-paths
: Это ключевой элемент, который вы добавляете в секцию"extra"
вашегоcomposer.json
. Он позволяет указать, куда именно должны устанавливаться плагины."wordpress/wp-content/plugins/{$name}"
: Эта настройка говорит Composer, что плагины должны устанавливаться в папкуwordpress/wp-content/plugins
, а не в корень проекта.
-
type:wordpress-plugin
: Это указывает Composer, что вы хотите перенаправить установку только для плагинов WordPress.
4. Установка плагинов
После внесения изменений в composer.json
, вы можете выполнить команду:
composer install
или
composer update
Эти команды установят все указанные плагины в правильную директорию, в соответствии с вашей настройкой.
5. Подведение итогов
Ниже следует несколько советов по отладке, если вы по-прежнему сталкиваетесь с проблемами:
- Убедитесь, что вы не кэшируете Composer. Если у вас есть старые установки, попробуйте выполнить команду
composer clear-cache
. - Проверьте правильность пути в вашей конфигурации. Небольшие опечатки могут привести к тому, что плагины будут установлены не туда.
- Сообщите о любых других возможных ошибках, например, версию Composer, которую вы используете, и версии плагинов.
Следуя приведенным выше инструкциям, вы сможете настроить Composer для установки плагинов в нужную директорию без дальнейших проблем.