Организация процесса разработки WordPress сайта. Концептуальная часть.

В процессе разработки множества программных продуктов в ходе своей карьеры я выработал стойкую неприязнь внесения изменений на продуктивной среде. Отладка и программирование на среде, которая доступна пользователям вызывает боль и страдания от осознания того факта, что мои любимые пользователи могут столкнуться с ужасными белыми экранами смерти и прочими ужасами побочных эффектов отладки кода.

Стоит упомянуть и безопасность: чересчур любопытные люди могут воспользоваться отладочным выводом, случайно возникшим на продуктиве. В общем, довольно страшилок! Даёшь решения! А решение простое: создать среду разработки на своем локальном компьютере и синхронизировать её с продуктивной средой.

Для начала нам нужно определиться что именно будем делать. Необходимо создать у себя серверное окружение, иметь возможность синхронизировать исходные коды между средой разработки и продуктивной средой, синхронизация базы данных и загруженного контента между двумя средами.

Начнём со среды. Нам нужно полностью эмулировать наше окружение хостинга, linux система, установленные модули, версия базы данных. Можно пойти дальше и использовать современные методы виртуализации и поставки приложений. Использовать Docker для организации рабочего контейнера приложения.

Далее, контроль исходных кодов. Здесь всё просто — git наше всё. Можно использовать github, bitbucket и всё что угодно для хранения и синхронизации наших исходных кодов.

Синхронизация базы данных. Здесь всё очень не просто. Во многих более зрелых системах, таких как Laravel, Django используется система миграций структуры базы данных, однако для wordpress такого нет. Может, в силу того, что его структура таблиц безумно проста, а разработчики ядра не парятся о разработчиках плагинов очень сильно: «мы вам дали хуки для обновления плагинов, а вы мигрируйте там сам как хотите». Так же встаёт вопрос о переносе контента с продуктива на среду разработки и обратно. Загруженные изображения и материалы так же сами не перенесутся. В контексте WordPress встаёт так же вопрос о изменении домена в ссылках, если наша среда разработки использует другое доменное имя (а она использует). Так что простой mysqldump нам здесь особо не поможет. Благо, и на это есть ответ.