composer.json установка плагинов в правильную подсистему [закрыто]

Вопрос или проблема

Я новичок в использовании 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 для установки плагинов в нужную директорию без дальнейших проблем.

Оцените материал
Добавить комментарий

Капча загружается...