Доработка сайта санитарной службы на WordPress: вернул доступ после фильтрации, подтверждение заявок по SMS и умная маска телефона, два сервера с автопереключением
Санитарная служба, Москва и область. Сайт на WordPress достался готовым: своя тема, 16 плагинов, около 480 городских поддоменов, 24 формы заявок на Contact Form 7. Почти все заявки с платной рекламы, поэтому любой простой сайта стоит денег.
Три задачи: вернуть доступ к сайту у части операторов после блокировки РКН; заменить внешний сервис SMS-подтверждения своим и починить маску телефона, из-за которой код уходил на чужой номер; сделать так, чтобы при отключении сервера сайт продолжал работать. Тему и чужие плагины не переписывать.
Что сделано:
- перевёл сайт за сеть защиты DDoS-Guard: ~480 поддоменов через один домен и один сертификат;
- свой плагин подтверждения заявок кодом из SMS: встроен в штатный механизм Contact Form 7 и сам находит поле телефона в любой форме; неподтверждённые заявки тоже доходят до менеджеров, но без конверсии в рекламе;
- умная маска телефона на чистом JavaScript: 8 превращается в +7, вставка из буфера, неполный номер не уходит, 163 теста;
- два сервера у разных провайдеров: двусторонняя репликация MySQL, синхронизация файлов, защита сама выводит упавший сервер из работы;
- ускорил серверную часть: локальный DNS-кэш, чистка, одна копия статики в CDN вместо ~480.
Результат: сайт снова открывается у всех операторов. Около 70% посетителей доводят SMS-подтверждение до конца, реклама учится только на живых людях. На учениях переключение на резервный сервер заняло 24 секунды, заявка посреди аварии не потерялась.
Стек: WordPress, PHP, JavaScript, MySQL, Linux, Nginx, DDoS-Guard, SMS.ru, Planfix.