Dabro It мастерская

Задача: импорт услуг из таблицы Google Spreadsheet с созданием новой структуры данных.
Ранее услуги и категории на сайте формировались с помощью статичных страниц. Однако заказчик решил значительно расширить ассортимент и добавить 2768 услуг для различных моделей и линеек. В результате ручное наполнение стало неэффективным, поэтому было принято решение реализовать автоматизированный импорт данных.

Перед началом импорта была проработана новая структура данных, а также внесены изменения в шаблоны. В целом внешний вид и стилистика сайта остались прежними — все доработки выполнялись с учётом текущего оформления.
Основные изменения и доработки:
- переработан прайс-лист с динамическим выводом услуг по связкам;
- реализовано облако тегов моделей на основе связок ACF-полей;
- выполнена переорганизация ACF-полей;
- добавлены новые хлебные крошки в соответствии с обновлённой структурой;
- переработано меню сайта;
- созданы два новых подраздела: страницы тегов и страницы услуг на основе кастомного
post_type; - реализованы страницы с теговыми связками;
- добавлена сортировка моделей по годам в меню и в облаке моделей;
- реализован скролл списка в меню.



После проработки структуры я приступил к созданию скрипта импорта. Изначально планировал реализовать загрузку через файл — экспортировать данные из Google Таблицы в CSV и загружать через админку. Однако позже нашёл более простой способ: прямой парсинг Google Таблицы по разрешённому URL для общего доступа.
При импорте нужно было учесть и правильно обработать около двух десятков мета-полей и ACF-полей, чтобы данные корректно отображались как в админке, так и на фронтенде.
Дополнительной сложностью была привязка меню. На сайте есть два меню — главное и мобильное. По связкам таблицы WP сложно было определить состояние меню, так как все данные формируются в таблицах posts и postmeta.
Для удобства работы был создан простой интерфейс и отдельная страница в админке. Также настроено логирование, чтобы удобно отслеживать процесс импорта.

После завершения импорта появилась задача формирования файла для плагина редиректов. Требовалось перенаправить все старые ссылки на новые — всего 170 записей. Поскольку делать это вручную через админку было неудобно, я спарсил старые ссылки, сопоставил их с новыми и подготовил файл импорта для плагина редиректа.
