Накратко за проекта
Онлайн магазинът работеше с YITH WooCommerce Brands Add-On, но клиентът премина към
Perfect Brands for WooCommerce за по-добра интеграция и по-добър дизайн. Освен това беше важно всички брандове да се запишат и в стандартния WooCommerce атрибут pa_brands за по-добра съвместимост с филтри и продуктови вариации.
Ключови подобрения
- Пълна миграция на брандовете: Всички термини от YITH бяха прехвърлени към
pwb-brandиpa_brands, запазвайки slug и описание. - Автоматично свързване на продуктите: Всеки продукт, който имаше YITH бранд, беше свързан с новите брандове в Perfect Brands и WooCommerce атрибутите.
- Еднократна миграция: Кодът е оптимизиран да се изпълнява само веднъж и след това се самоизключва.
Използвани технологии
- WooCommerce – основната платформа за управление на продуктите.
- PHP + WordPress API – за директна миграция през
functions.php. - wp_insert_term() и wp_set_object_terms() – за създаване на брандове и свързване на продуктите.
Предизвикателства
Основното предизвикателство беше да се прехвърлят брандовете, без да се изгубят връзките с продуктите и без да се дублират съществуващи термини в Perfect Brands и WooCommerce атрибутите. Решението беше да се направи проверка с term_exists() и да се използва еднократен скрипт, който автоматично създава липсващите термини и ги асоциира.
Резултат
След миграцията всички продукти запазиха правилните брандове и вече се използваха в Perfect Brands и WooCommerce атрибутите, което позволи по-добра съвместимост с филтри и дизайн. Времето за ръчна обработка беше спестено изцяло, а сайтът вече е готов за бъдещи оптимизации и филтри по брандове.
Стъпки за репродуциране
- Поставете предоставения PHP код в
functions.phpна активната или child темата. - Заредете администраторския панел – скриптът ще се изпълни автоматично веднъж.
- Проверете в продуктите дали брандовете са мигрирани към
pwb-brandиpa_brands. - След успешната миграция премахнете кода от
functions.phpи деактивирайте YITH плъгина.
Времето за пълното изпълнение на скрипта зависи пряко от броя на продуктите в сайта. Колкото повече са продуктите и брандовете на сайта, толкова повече време ще отнеме. Бъдете търпеливи. Скрипта е направен да се пусне само веднъж - при евентуален повторен refresh скрипта няма да прекъсне процеса на работа и да започне отново.