Наследство, иероглифы и рефакторинг: Как я запускал китайскую версию для премиального девелопера (часть 1)
Всем привет! Последнюю неделю провел в «архитектурных раскопках». В работу попал проект по недвижимости в ОАЭ, который изначально создавался другим разработчиком как связка RU-EN. Моей же задачей стал запуск полноценной китайской версии (ZH) на базе Polylang. Ситуация классическая: проект уже живет, в базе около десятка эксклюзивных объектов, и нужно не просто добавить перевод, а перестроить логику, не сломав то, что уже работает.
Главный вызов пришел со стороны каталога. Чтобы не плодить дубликаты товаров и не запутаться в синхронизации цен, я реализовал схему «общих товаров» для всех языков. Однако стандартные фильтры WooCommerce по атрибутам (типы вилл, локации, количество спален) тут же «посыпались», выдавая в китайской версии английские термины. Пришлось переписывать логику вывода через ICL_LANGUAGE_CODE, принудительно фильтруя массив данных по текущему языковому контексту прямо в шаблонах. Параллельно пришлось «лечить» наследство предыдущего этапа разработки. В теме был жесткий хардкод ID страниц для вывода форм и баннеров, завязанный на старую структуру URL. Я заменил это на гибкую систему определения контекста через is_shop() и is_archive(). Теперь сайт сам понимает, какой контент подтянуть из Carbon Fields для китайского блога или каталога, не опираясь на хрупкие текстовые совпадения в адресе страницы. В итоге удалось превратить разрозненные правки в стройную систему, которая легко масштабируется. Работа с чужим кодом всегда учит терпению и умению находить элегантные костыли там, где нельзя переписать всё с нуля. Спасибо, что следите за моими буднями — впереди еще много интересного по части оптимизации для азиатского региона!