Хранить файлы ядра WordPress в репозитории проекта можно, но у вас могут возникнуть определенные трудности при таком флоу:
- сложный процесс обновления ядра WordPress.
- сложности code review или его отсутствие из-за огромного количества ченжей при замене файлов ядра WP на новую версию.
- использовать разные версии WordPress для монорепозитория.
С этим нам тоже может помочь Composer, но данное решение выходит за рамки статьи.
Для решения этих проблем в экосистеме WordPress, нам поможет Composer.
Composer — это инструмент для управления зависимостями в проектах на PHP. Он позволяет управлять библиотеками и расширениями, необходимыми для работы вашего проекта, и автоматически загружает их из удаленных репозиториев (packagist.org).
Composer помогает упростить процесс установки, обновления и удаления зависимостей в PHP-проектах, а также обеспечивает правильное разрешение конфликтов между разными версиями библиотек.
Для использования Composer локально есть 2 варианта:
- работать с Composer из-под готового Docker Container следуя инструкции из README.md
- использовать официальную документацию с установкой бинарника Composer локально https://getcomposer.org/download/
Далее давайте поговорим о использовании Composer в экосистеме WordPress.
.wpj-jtoc.—jtoc-theme-basic-light.—jtoc-has-custom-styles {
—jtoc-numeration-suffix: «. «;
—jtoc-numeration-color: #adadad;
}
Установка WordPress через Composer
Для установки WordPress через Composer, нам вначале нужно создать файл composer.json
в корне проекта с базовым содержимым:
{
"name": "wp-yoda/composer-with-wordpress",
"description": "Example of using Composer for installing WordPress core and plugins",
"authors": [
{
"name": "Andrei Pisarevskii",
"email": "renakdup@gmail.com"
}
],
"require": {}
}
Далее нам необходимо добавить директиву repositories
в composer.json
откуда Composer пакеты WordPress будут подтягиваться
"repositories": [
{
"type": "package",
"package": {
"name": "wordpress/wordpress",
"version": "6.2.2",
"type": "wordpress-core",
"dist": {
"type": "zip",
"url": "https://github.com/WordPress/WordPress/archive/refs/tags/6.2.2.zip"
}
}
}
],
Composer будет смотреть в эту директиву и просматривать все репозитории, чтобы найти нужный package. Подробнее по ссылке .
После того как мы добавили источник откуда будет скачиваться WordPress (официальный репозиторий), я предлагаю добавить WordPress как Composer зависимость.
Выполним следующую команду в консоле:
composer require wordpress/wordpress
После того как мы добавили пакет в composer.json, произошла и установка пакетов, вы должны увидеть у себя следующую структуру:
Не забудьте добавить
/vendor/
в.gitignore
файл, чтобы файлы Composer не индексировались.
Но вот незадача, Composer установил WordPress в vendor директорию.
Как его вытащить наружу?
Воспользуемся для этого Composer scripts events
События Composer scripts
Composer scripts events — это события Composer, которые запускают кастомные команды до, после выполнения Composer команды.
Простыми словами: мы можем повесить выполнение команды после или до того как выполнится composer install
. Подробнее вы можете почитать по ссылке.
Вначале рассмотрим классический вариант установки WordPress в проект.
Классический вариант установки WordPress
Классический вариант — это вариант когда мы располагаем все файлы ядра WordPress в корне проекта, вместе с кастомными файлами.
У этого варианта есть свои преимущества и недостатки.
Преимущества:
- Все плагины совместимы с этой структурой проекта
Недостатки:
- Файлы ядра могут мешать при работе с проектом, т.к. они совмещены с вашими кастомными файлами.
Чтобы использовать этот вариант, необходимо добавить директиву scripts
с событием post-install-cmd
, которое срабатывает после install
.
"scripts": {
"post-install-cmd": "cp -r ./vendor/wordpress/wordpress/* ./"
}
в скрипте "post-install-cmd"
мы копируем содержимое установленного WordPress в vendor
директорию в наш рабочий каталог ./
Для того чтобы файлы ядра не попали в git index
, необходимо добавить следующие правила в .gitignore
# ignore WordPress files
/index.php
/license.txt
/readme.html
/wp-activate.php
/wp-blog-header.php
/wp-comments-post.php
/wp-config-sample.php
/wp-config.php
/wp-cron.php
/wp-links-opml.php
/wp-load.php
/wp-login.php
/wp-mail.php
/wp-settings.php
/wp-signup.php
/wp-trackback.php
/xmlrpc.php
/wp-includes
/wp-admin
!/wp-content
/wp-content/*
/wp-content/mu-plugins/
!/wp-content/mu-plugins/
!/wp-content/plugins/
/wp-content/plugins/*
!/wp-content/plugins/CustomPluginName
!/wp-content/themes/
/wp-content/themes/*
!public/wp-content/themes/CutsomTheme
Теперь файлы ядра индексироваться не будут.
Для того чтобы добавить в индекс git новый плагин или тему, вам нужно добавить в конец файла .gitignore
строки по примеру:
!/wp-content/plugins/CustomPluginName
!public/wp-content/themes/CutsomTheme
Где CustomPluginName
или CustomTheme
имя директории вашего плагина.
Исходный код этого варианта доступен по ссылке на :
https://github.com/renakdup/composer-with-wordpress/tree/Classic-variant-installation
Исходный код
Полный код проекта доступен в репозитории по ссылке.
Подытожим
Это первая статья из серии двух статей Использование Composer в WordPress.
Вторая статья про установку плагинов через WordPress повится чуть позже.
Теперь вы познакомились с тем как устанавливать WordPress через Composer.
Рассмотрели классический вариант установки WordPress в ваш проект.
Не стейсняйтесь рассказывать своим коллегам об этом подходе и применять на проектах.
Источник: WP-Yoda.com