Использование Composer в WordPress: небольшое руководство для новичков
В этой статье мы объясним, почему вы должны использовать менеджер зависимостей, а также покажем, как интегрировать Composer к своему WordPress-сайту.
Почему стоит использовать менеджер зависимостей в WordPress
Повторное использование кода – хорошая вещь. Ваши клиенты не будут платить вам за повторное изобретение колеса, они платят за то, чтобы вы создали для них сайт или приложение. Возможно, вы уже знаете это, и потому у вас имеется набор плагинов, которые вы используете на всех создаваемых вами сайтах WordPress. Вы уже используете код других людей, оформленный в виде плагинов, однако есть также огромный мир современных PHP библиотек, доступных вам через Composer.
Некоторые разработчики сделали плагины доступными в виде зависимостей для Composer.
Менеджер зависимостей может быть частью вашего рабочего процесса. Он позволяет вынести сторонний код за пределы вашего исходного репозитория. Также он позволяет воспользоваться многочисленными PHP-библиотеками, которые в других ситуациях были бы недоступны.
Если вы – один из тех, кому нравится взламывать плагины и переписывать их так, чтобы они делали необходимые вам вещи (после чего ваши изменения будут убиты очередным обновлением плагина), менеджер зависимостей позволит поменять ваш ход мыслей, заставит вас по-другому добиваться поставленных целей.
Начинаем работу с Composer
Если вы уже работали с Composer, вы знаете, что для начала вам нужно поместить WordPress в подпапку. Возможно, вы используете подмодуль, как предлагает Марк Джекит.
Отлично! В таком случае давайте превратим этот подмодуль WordPress в зависимость Composer.
Но для начала вам нужно будет удалить подмодуль. Мы не будем рассказывать про это в данной статье.
Краткое введение в инсталляторы Composer
Composer устанавливает библиотеки в каталог vendor в корне вашего проекта. Каждый пакет по умолчанию располагается в vendor/{vendorName}/{libraryName}. Инсталлятор позволяет вам менять это поведение на основе типа пакета. Поскольку WordPress не является библиотекой (это скорее приложение со статичными ресурсами), нам нужно установить его в отдельную папку в пределах директории корня документа.
К счастью, нам не надо создавать инсталлятор WordPress самостоятельно, поскольку он уже существует.
Установка WordPress
Определить зависимости Composer вы можете в файле composer.json, который находится в корне вашего проекта. Существует автоматически обновляемый форк WordPress, который включает в себя файл composer.json.
Чистый файл Composer включает в качестве зависимостей инсталлятор WordPress, а также саму систему WordPress. Также имеется раздел extra, в котором вы сообщаете инсталлятору WordPress, куда поместить WordPress.
{
"name": "pmg/composer-wp-example",
"description": "Getting start with WordPress and Composer",
"license": "MIT",
"require": {
"php": ">=5.5",
"johnpbloch/wordpress-core-installer": "0.2.0",
"johnpbloch/wordpress": "~4.2"
},
"extra": {
"wordpress-install-dir": "wp"
}
}
Приведенный выше код установит WordPress в каталог wp. Если у вас уже установлен Composer, вы можете ввести composer install в командную строку.
Если вывести список файлов из нашей новой директории, то мы увидим WordPress, новый каталог vendor, а также файл composer.lock:
wp-composer-example$ ls composer.json composer.lock vendor wp
Установка плагинов и произвольных репозиториев
Теперь, когда у нас установлена WordPress, давайте поставим некоторые плагины с помощью composer. Помните инсталлятор, приведенный выше? Так вот: существуют и другие, произвольные инсталляторы для плагинов и тем WordPress, которые являются частью библиотеки composer/installers. Давайте воспользуемся ими. Пути к файлам ниже предполагают, что вы задали для content папку wp-content.
Чтобы установить плагины в качестве зависимостей Composer с WP Packagist, нам нужно добавить их в виде репозиториев в наш файл composer.json. Наш новый файл будет иметь следующий вид:
{
"name": "pmg/composer-wp-example",
"description": "Getting start with WordPress and Composer",
"license": "MIT",
"repositories": [
{
"type":"composer",
"url":"http://wpackagist.org"
}
],
"require": {
"php": ">=5.5",
"johnpbloch/wordpress-core-installer": "0.2.0",
"johnpbloch/wordpress": "~4.2",
"composer/installers": "~1.0"
},
"extra": {
"wordpress-install-dir": "wp",
"installer-paths": {
"content/plugins/{$name}": ["type:wordpress-plugin"],
"content/themes/{$name}": ["type:wordpress-theme"],
"content/mu-plugins/{$name}": ["type:wordpress-muplugin"]
}
}
}
Давайте установим в качестве зависимости WordPress SEO:
{
"name": "pmg/composer-wp-example",
"description": "Getting start with WordPress and Composer",
"license": "MIT",
"repositories": [
{
"type":"composer",
"url":"http://wpackagist.org"
}
],
"require": {
"php": ">=5.5",
"johnpbloch/wordpress-core-installer": "0.2.0",
"johnpbloch/wordpress": "~4.2",
"composer/installers": "~1.0",
"wpackagist-plugin/wordpress-seo": "~2.1"
},
"extra": {
"wordpress-install-dir": "wp",
"installer-paths": {
"content/plugins/{$name}": ["type:wordpress-plugin"],
"content/themes/{$name}": ["type:wordpress-theme"],
"content/mu-plugins/{$name}": ["type:wordpress-muplugin"]
}
}
}
После запуска composer update из командной строки у нас будет директория content, которая будет содержать наш недавно установленный плагин!
wp-composer-example$ ls composer.json composer.lock content vendor wp wp-composer-example$ ls content/plugins/ wordpress-seo
Другие советы
В идеале вам нужно развернуть свой WordPress-сайт таким образом, чтобы папка vendor и ваши файлы composer.{lock,json} не были в корне документа и не были публично доступными. Блокировать эти файлы можно с помощью конфигурации сервера:
RewriteEngine on RewriteRule ^composer.(lock|json)$ - [F,L] RewriteRule ^vendor/.*$ - [F,L]
server {
host yoursite.com
# ...
location ~ ^/composer.(json|lock) {
return 401;
}
location /vendor {
return 401;
}
}
Я написал небольшой WordPress Skeleton, чтобы вы могли начать работу с Composer.
Делаем первый шаг
Как только вы начнетесь пользоваться Composer, вам будет сложно отказаться от него. Дайте ему шанс – по крайней мере, вы можете попробовать поставить WordPress через Composer.
Источник: https://www.pmg.com
