Как установить WordPress с помощью Composer: пошаговое руководство по установке
Опубликовано: 2023-02-28Введение: Почему Composer является основой WordPress?
Как и любое другое приложение, ваш сайт WordPress наиболее безопасен, когда вы можете обеспечить повторяемость сборок и фиксацию обновлений для своего кода и его зависимостей. Ваша инфраструктура фиксируется с помощью набора файлов конфигурации, в которых указывается, какую версию PHP и MariaDB вы хотите использовать. Это лучший способ обеспечить воспроизводимость вашего проекта при разработке новых функций.
Ядро WordPress, а также его темы и плагины в идеале должны работать одинаково, но часто это не так. Панель администрирования WordPress предоставляет кнопки одним нажатием для обновления всех этих компонентов, когда они устарели или иным образом ожидают доступа на запись к файловой системе для внесения изменений в конфигурацию во время выполнения. Однако такое развитие имеет свои последствия.
Во-первых, у вас не всегда будет доступ для записи к файловой системе во время выполнения. Таким образом, зависимость от этого механизма обновлений и изменений конфигурации полностью ограничена для многих хостинговых решений. С другой стороны, если у вас есть доступ на запись во время выполнения, где вы в настоящее время размещаете, установка нового модуля или темы представляет собой нетривиальную угрозу безопасности (когда источник неизвестен).
Но, возможно, самое главное, обновление WordPress во время выполнения отделяет состояние вашего сайта от кода в вашем репозитории. Коллега, работающий над новой функцией в своем локальном клоне проекта, вполне может быть полной версией живого сайта. В результате этого рабочего процесса вы можете внести ошибки с неизвестными (и непроверенными) последствиями.
Преимущества использования Composer
Учитывая приведенные выше факты, управление сайтом WordPress с помощью Composer имеет явные преимущества. Во-первых, он позволяет явно определить ваши зависимости в зафиксированном файле (composer.lock). Этот файл блокировки создается из более описательного списка ограничений зависимостей (composer.json) при установке ваших зависимостей и становится частью истории коммитов вашего проекта. С этого момента любая новая ветка будет работать от идентичного набора зависимостей до точного хэша коммита. В этот момент не имеет значения, кто вносит свой вклад в проект или даже где он развернут — это один и тот же код для всех и везде.
Composer также устраняет необходимость фиксации большого количества внешнего кода в вашем репозитории. В случае с WordPress отсутствие использования Composer обычно требует, чтобы вы передали весь код темы и даже самого ядра WordPress и плагинов в свой собственный проект. Помимо того, что репозиторий становится излишне большим и замедляет клонирование, обновление этих копий становится жонглированием, с которым никому не нужно иметь дело.
С помощью Composer вы можете добавлять и обновлять зависимости в своем проекте, а затем блокировать их точные версии, чтобы каждая новая ветка получала одно и то же обновление. Если бы обновление было выполнено на развернутом сайте во время выполнения, вам нужно было бы не забыть сначала выполнить git pull.
Установка ядра WordPress с Composer
Точно так же использование Composer избавляет вас от необходимости коммита всего WordPress в ваш репозиторий, поскольку вы можете добавить его в качестве зависимости. Есть несколько способов сделать это (например, Bedrock), в зависимости от того, сколько предположений вы хотите сделать для своей конфигурации и структуры проекта. Самый простой из них использует форк John Bloch Composer для добавления установщика в ваши сборки для 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": правда } } }
У нас есть ядро WordPress в папке WordPress. Но нам нужно скопировать index.php за пределы каталога WordPress, чтобы мы могли указать веб-серверу корневой каталог.
Чтобы полностью управлять WordPress с помощью Composer , нам нужно использовать другой каталог для wp-content вместо каталога по умолчанию, WordPress/wp-content.
Давайте создадим новый каталог в корне проекта с именем wp-content.
Один раз скопируйте index.php из папки WordPress. Нам нужно изменить расположение файла wp-blog-header.php, где находится наш каталог WordPress.
После изменения index.php будет выглядеть так
<?php определить('WP_USE_THEMES', правда); требуют (имя_каталога (__FILE__). '/wordpress/wp-blog-header.php');
Нам нужно создать файл .htaccess в корневом каталоге со следующим содержимым:
# НАЧАТЬ WordPress <IfModule mod_rewrite.c> RewriteEngine включен Переписать Базу / Правило перезаписи ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Правило перезаписи. /index.php [Л] </ЕслиМодуль> # ЗАВЕРШИТЬ WordPress
Давайте продолжим и скопируем образец файла wp-config.php, а затем добавим следующий код:
$домен = 'mydomain.com; определить('WP_SITEURL', "https://{$domain}/wordpress"); определить('WP_HOME',"https://{$domain}"); $httpHost = isset($_SERVER['HTTPS_HOST'])? $_SERVER['HTTPS_HOST'] : $домен; определить('WP_CONTENT_DIR', имя_каталога(__FILE__). '/wp-content'); определить('WP_CONTENT_URL', 'https://'. $httpHost. '/wp-content'); /** Абсолютный путь к каталогу WordPress. */ если (! Определено ('ABSPATH')) { определить('ABSPATH', имя_каталога(__FILE__) . '/wordpress'); }
Мы добавили WordPress в ABSPATH, поскольку ядро WordPress находится в /WordPress.
Поскольку файл wp-config.php содержит конфиденциальные данные; мы не будем передавать его в наш репозиторий, создав файл .gitignore:
/wp-config.php /Вордпресс/ /wp-контент/ /продавец/
Каталоги WordPress, wp-content и vendor также необходимо игнорировать, поэтому мы также добавим их в файл .gitignore.
Примечание. Вам необходимо изменить каталог wp-content, если вы хотите добавить другое соглашение об именах для своего wp-контента.
Корневой каталог нашего проекта должен выглядеть так
.git .gitignore композитор.lock композитор.json продавец wp-config.php index.php вордпресс
Вам нужно создать базу данных и изменить данные в wp-config.php. Ваш веб-сайт WordPress будет называться «mydomain.com», а серверная часть WordPress будет доступна по адресу mydomain.com/wordpress/wp-admin.
Добавление плагинов и тем из репозитория WordPress
По умолчанию Composer просматривает только репозиторий packagist.org. Но он не содержит плагинов и тем WordPress.

Чтобы иметь возможность загружать плагины и темы WordPress, вам нужно указать Composer на репозиторий wpackagist.org. Вы делаете это, добавляя этот фрагмент конфигурации в ваш файл composer.json:
"хранилища": [ { "тип": "композитор", "url": "https://wpackagist.org", "только": [ "wpackagist-плагин/*", "wpackagist-тема/*" ] } ],
Нам также нужно сообщить Composer, куда помещать плагины и темы. Это включает в себя добавление дополнительной конфигурации в composer.json:
"дополнительный": { "пути установщика": { "wp-content/mu-plugins/{$name}/": [ "тип: wordpress-muplugin" ], "wp-content/plugins/{$name}/": [ "тип: wordpress-плагин" ], "wp-контент/темы/{$имя}/": [ "тип: wordpress-тема" ] } }
Теперь вы можете установить любой плагин или тему из официальных репозиториев с помощью команды composer require, как мы это сделали для установки WordPress.
# Чтобы установить плагин, используйте этот формат:
композитор требует "wpackagist-plugin/:"
# Чтобы установить тему, используйте этот формат:
для композитора требуется "wpackagist-theme/:"
Ограничения версии сложны, но, вероятно, проще всего запомнить форму с использованием подстановочного знака *. Чтобы установить бесплатную версию нашего плагина WP Migrate, используя версию 2.x, вы должны запустить:
composer require "wpackagist-plugin/wp-migrate-db:2.*"
Если вы всегда хотели, чтобы ваши обновления получали самую последнюю версию, вы можете использовать * в качестве ограничения версии:
composer require "wpackagist-plugin/wp-migrate-db:*"
При первом запуске подобной команды вас могут спросить, хотите ли вы «доверить «композитору/установщику» выполнение кода». Это безопасно, но имейте в виду, что это позволяет Composer запускать код на вашем компьютере.
Если все в порядке, вы должны установить плагин (но не активировать). Я бы также рекомендовал зафиксировать ваши изменения в Git на этом этапе.
Добавление пользовательских или сторонних плагинов и тем
Это все нормально, если вам нужны плагины и темы из репозитория. Но что, если вы хотите добавить сторонние плагины, которых нет в репозитории wordpress.org, или свой собственный код? Каталог WordPress не находится в Git, так как же вы контролируете свои собственные версии?
Некоторые авторы тем и плагинов поддерживают пользовательские репозитории для своих плагинов.
А некоторым темам и плагинам запрещено использовать какой-либо репозиторий для своих плагинов, например, платные плагины.
Но если это не применимо, то трюк здесь заключается в том, чтобы выборочно отменить игнорирование определенных каталогов с помощью файла .gitignore и добавить эти пользовательские плагины и темы в composer.json.
Мы также можем поместить эти плагины в другой каталог, чтобы установить их из composer.json.
Поскольку мы игнорируем папку плагинов в .gitignore, нам нужно создать другую папку с именем dist,
В дистрибутиве у нас могут быть платные и пользовательские плагины, и мы можем установить их из Composer.
- расстояние/
- плагины/
- темы/
- мю-плагины/
Нам нужно скопировать наши пользовательские плагины и темы в соответствующую папку.
И нам нужно создать composer.json для каждого плагина, добавленного в dist/plugins.
В настоящее время у нас есть платная версия advanced-custom-fields-pro. Мы также хотим добавить этот плагин через композитор для установки в один клик и автоматизации развертывания.
Мы должны загрузить этот плагин с портала веб-сайта автора и извлечь этот плагин в папку dist/plugins/advanced-custom-fields-pro. И создайте composer.json в той же папке со следующим содержимым:
{ "name": "пользовательские плагины/acf-pro", "description": "Расширенные настраиваемые поля PRO", "версия": "5.12.2", "type": "wordpress-плагин", "требовать": { "композитор/установщик": "^1.0", "johnpbloch/wordpress-core": ">=5.4" } }
Здесь мы можем добавить версию и имя с пользовательскими префиксами. И добавьте код в корневой файл composer.json для вызова этого плагина во время установки.
В разделе «репозитории»: добавьте следующий код в последнюю очередь,
"хранилища": [ { "тип": "путь", "url": "расстояние/плагины/*", "параметры": { "символическая ссылка": ложь }
У вас есть и другие записи в разделе репозиториев. Чтобы установить этот плагин, у нас есть два способа: сначала добавить имя плагина с версией в
"требовать": { "пользовательские плагины/acf-pro": ">=5.12.2" }
Или выполните следующую команду, она установит плагин и добавит указанную выше запись в composer.json.
$ composer требует пользовательских плагинов/acf-pro
Точно так же мы можем установить темы и плагины mu.
Для темы нам нужно добавить расположение папки темы,
"хранилища": [ { "тип": "путь", "url": "расстояние/темы/*", "параметры": { "символическая ссылка": ложь }
Вам необходимо добавить 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/