WordPress on Staging + Static HTML on Production

Железобетонно-рабочего решения для «WordPress on Staging + Static HTML on Production» на данный момент нет 😦

Появился целый набор платных сервисов которые пытаются колдовать с таким решением, но делают пока это с переменным успехом…

Почти у всех не работают скрипты шаринга в соцсети, контактные формы, файлы и документы за пределами CMS WordPress, слетают кастомные CSS, не работает мобильная версия темы, ну и остальное по мелочи.

Самым надежным на данный момент выглядит следующий подход:

  1. Устанавливаем WP в папку на отдельном секретном саб-домене.
  2. Настраиваем WP чтобы работал от корня (иначе относительные ссылки будут глючить)
  3. В корне сайта, в под-папках, раскладываем материалы которые не имеют отношения к WordPress (статические страницы, PDF, ZIP и прочие файлы).
  4. В WordPress делаем страничку с агрегацией ссылок на все НЕ WordPress ресурсы вашего сайта (ссылку на такую страничку надо хотя бы одну).
  5. Создаем все страницы и посты сайта прямо в админке WordPress.
  6. Экспортируем контент в ZIP архив. Можно с помощью плагина Simply Static, можно внешней утилитой типа Website Downloader . Желательно перед экспортом отключить всякие кеш-плагины, минифаеры файлов, и прочие «улучшатели» контента.
  7. Заливаем ZIP с архивом сайта на хостинг основного домена и распаковываем его прямо в корень. Можно использовать S3 bucket или GitHub pages чтобы «сэкономить».
  8. «Отключаем» WordPress на секретном субдомене. Можно временно заменять Database криденшелы в wp-config.php, переводить сайт в доступ по паролю, остановить MySQL сервис и т.д. Я просто выключаю виртуалку с инстансом WordPress.

Все! С этого момента счастливо живем без спама, попыток взлома и прочего WordPress дурдома.

Если надо будет что-то добавить или изменить на сайте: «включаем» WordPress и повторяем все действия с пункта №5 и до конца.

P.S. Если у вас сильно отличается мобильная и десктопная версии сайта, лучше делать 2 разных экспорта статического контента. Один для мобильной темы, второй раз для полноразмерной. Редиректить пользователя на подходящий веб-сайт придется уже на основном хостинге.