Magento обслужва добре големи каталози, но поддръжката му струва скъпо и изисква специализиран екип. WooCommerce предлага по-ниски оперативни разходи, по-богата екосистема от плъгини и значително по-кратко време за разработка на нови функционалности. Точно затова магазини с 500-5000 продукта все по-често сменят Magento с WooCommerce – без загуба на данни и без прекъсване на продажбите.
Съдържание
Какво точно трябва да се мигрира
Списъкът е дълъг и пропускането на един елемент може да счупи магазина след преместването.
Продуктите са основата – прости, вариативни (configurable в Magento), grouped и bundle. Всеки продукт носи атрибути (цвят, размер, материал), стойности на атрибутите, attribute sets, снимки с alt текст, ценова информация, наличности, SEO мета данни, URL ключове и свързани продукти (cross-sells, up-sells). Категориите в Magento поддържат дълбока вложеност – дърво с 4-5 нива не е рядкост. Таговете (Magento 1) или label-ите трябва да се преобразуват в WooCommerce product tags.
Клиентските акаунти включват имена, имейли, адреси за доставка и фактуриране, клиентски групи (wholesale, retail) и wishlist-ове. Поръчките пренасят статуси, line items, данъчни изчисления, метод на плащане и доставка. Промо кодовете (cart price rules и catalog price rules) имат различна логика в двете системи и изискват ръчно пресъздаване в повечето случаи.
Подготовка на Magento преди експорта
Почистването на старата база спестява часове работа по импорта.
Магазини на Magento натрупват хиляди abandoned carts, log записи и стари сесии. Изтрийте всичко ненужно преди да експортирате – таблиците log_url, log_url_info, log_visitor, log_visitor_info, report_event могат да заемат гигабайти. Деактивирайте продуктите, които повече не се продават, вместо да ги мигрирате. Проверете дали всички продуктови снимки реално съществуват на сървъра, защото Magento не изтрива физически файловете при смяна на изображение.
Стандартизирайте атрибутите – ако имате „Цвят“, „цвят“ и „Color“ като три отделни атрибута, обединете ги преди експорта.
Експорт на продукти от Magento
Magento съхранява продуктовите данни в EAV (Entity-Attribute-Value) модел, което прави директния SQL експорт сложен.
Най-чистият подход е през Magento REST API (v2), но при големи каталози скоростта е проблем – 5000 продукта се издърпват за 30-40 минути. Алтернативата е директен SQL от catalog_product_entity и свързаните EAV таблици (_varchar, _int, _decimal, _text) плюс eav_attribute. За configurable продукти трябва join към catalog_product_super_link и catalog_product_super_attribute.
SELECT
cpe.entity_id, cpe.sku, cpe.type_id,
cpev_name.value AS product_name,
cpet_desc.value AS description,
cped_price.value AS price,
cped_special.value AS special_price,
csi.qty AS stock_qty
FROM catalog_product_entity cpe
LEFT JOIN catalog_product_entity_varchar cpev_name
ON cpe.entity_id = cpev_name.entity_id
AND cpev_name.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'name' AND entity_type_id = 4)
AND cpev_name.store_id = 0
LEFT JOIN catalog_product_entity_decimal cped_price
ON cpe.entity_id = cped_price.entity_id
AND cped_price.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'price' AND entity_type_id = 4)
LEFT JOIN cataloginventory_stock_item csi ON cpe.entity_id = csi.product_id
WHERE cpe.type_id IN ('simple', 'configurable')
Резултатът се записва в CSV за последваща трансформация.
Категории, тагове и атрибути в WooCommerce
Magento поддържа category tree с неограничена дълбочина, докато WooCommerce на практика работи оптимално с 3 нива за навигация и ефективна филтрация на продуктите.
Експортирайте категориите от catalog_category_entity и catalog_category_entity_varchar – полетата parent_id, position и path определят йерархията. При импорт използвайте wp_insert_term() с параметър parent, като тръгнете от root категориите надолу. Ако Magento магазинът има 4-5 нива, помислете дали долните нива не трябва да станат атрибути за филтриране – „Дамски > Обувки > Кецове > Nike > Бели“ може да се опрости до категория „Дамски кецове“ с атрибути „Марка: Nike“ и „Цвят: Бял“.
WooCommerce няма директен еквивалент на Magento attribute sets. Атрибутите за филтриране или вариации се създават като глобални WooCommerce атрибути. Информативните атрибути („Страна на произход“, „Гаранция“) остават като custom product meta. Ако миграцията от OpenCart изисква подобен подход, при Magento сложността е по-висока заради EAV модела.
Вариативни продукти – от configurable към variable
Configurable продуктите в Magento се състоят от parent продукт и свързани simple продукти.
Трансформацията изисква идентифициране на parent-child връзките от catalog_product_super_link, извличане на super attributes от catalog_product_super_attribute и създаване на WooCommerce variable product с variations за всяко дете.
$parent = new WC_Product_Variable();
$parent->set_name($magento_parent['name']);
$parent->set_sku($magento_parent['sku']);
$attributes = [];
foreach ($magento_super_attributes as $attr) {
$attribute = new WC_Product_Attribute();
$attribute->set_name('pa_' . $attr['slug']);
$attribute->set_options($attr['values']);
$attribute->set_visible(true);
$attribute->set_variation(true);
$attributes[] = $attribute;
}
$parent->set_attributes($attributes);
$parent_id = $parent->save();
foreach ($magento_children as $child) {
$variation = new WC_Product_Variation();
$variation->set_parent_id($parent_id);
$variation->set_sku($child['sku']);
$variation->set_regular_price($child['price']);
$variation->set_manage_stock(true);
$variation->set_stock_quantity($child['qty']);
$variation->save();
}
Grouped и bundle продуктите изискват допълнителна обработка – WooCommerce поддържа grouped нативно, но bundle функционалността идва от плъгин като WooCommerce Product Bundles.
Клиенти и поръчки
Паролите не могат да се мигрират директно – Magento използва различен hashing алгоритъм (SHA-256 в Magento 2, MD5 в Magento 1).
Практичното решение е да създадете потребителите чрез wp_insert_user() с произволна парола и да изпратите „Reset Password“ имейл до всички. Клиентските групи от Magento (wholesale, retail, VIP) се пресъздават чрез WordPress roles или чрез плъгин за role-based pricing. Адресите за доставка и фактуриране се записват като user meta полета (billing_address_1, billing_city, shipping_address_1 и т.н.).
От поръчките се експортират sales_order, sales_order_item, sales_order_address и sales_order_payment. Статусите се маппват: Magento „processing“ -> WooCommerce „processing“, „complete“ -> „completed“. Данъчната информация трябва да се пренесе внимателно, особено ако магазинът работи с различни данъчни ставки. Стари поръчки (над 2 години) рядко имат практическа стойност – обмислете дали да ги архивирате в CSV вместо да ги импортирате.
Промо кодове и продуктови снимки
Magento разделя промоциите на Cart Price Rules и Catalog Price Rules, докато WooCommerce обединява двата типа в Coupons и Sale prices.
Cart Price Rules с условия като „10% при поръчка над 100 лв“ се пресъздават като WooCommerce купон с minimum_amount. Catalog Price Rules нямат директен еквивалент – задайте sale price ръчно или използвайте dynamic pricing плъгин. За повечето магазини ръчното пресъздаване на 10-20 купона отнема час-два.
Снимките се намират в pub/media/catalog/product/ (Magento 2). Изтеглете цялата директория и оптимизирайте изображенията преди импорт – конвертирайте в WebP и намалете резолюцията до 1200x1200px, което сваля обема с 60-70%.
SEO пренасочвания и 301 redirects
Без правилни 301 redirects Google индексира 404 страници и магазинът губи органичен трафик за месеци.
Magento използва URL pattern /product-name.html, а WooCommerce генерира /product/product-slug/. Експортирайте URL rewrites от url_rewrite таблицата. За магазини с хиляди продукта, зареждайте пренасочванията от database таблица или CSV файл. Правилната конфигурация на Cloudflare може да поеме redirects-ите чрез Bulk Redirects, без да натоварва PHP процеса.
Автоматизирани инструменти и тестване
Cart2Cart и LitExtension са SaaS услуги, които прехвърлят продукти, категории, клиенти и поръчки автоматично – миграция на 2000 продукта струва $100-200.
WP All Import + WP All Export е друга опция за импорт от CSV/XML с гъвкав mapping. Нито един инструмент не покрива 100% от случаите – bundle продукти, custom options и Magento EE features винаги изискват ръчна доработка. Подходът при миграция от CloudCart е подобен – автоматизацията покрива 80-90% от работата.
След импорта сравнете бройката продукти, категории и клиенти между двете системи. Отворете 20-30 случайни продукта и проверете име, цена, описание, снимки, атрибути, SKU. Направете тестова поръчка с купон. Проверете Core Web Vitals показателите – ако LCP е над 2.5 секунди, оптимизирайте преди да пуснете магазина live. Настройте данъци, доставки, payment gateway-и, и проверете дали валутните настройки за BGN/EUR са коректни. Магазин с 3000+ продукта без обектен кеш (Redis или Memcached) генерира TTFB от 2-3 секунди на категорийни страници – инсталирайте кеширащ плъгин и CDN преди да насочите DNS-а.
Често задавани въпроси
-
Колко време отнема миграция от Magento към WooCommerce?
Зависи от обема на данните. Магазин с 1000-2000 продукта, клиенти и поръчки обикновено се мигрира за 1-2 седмици, включително тестване. При над 5000 продукта с вариации и сложни атрибути – 3-4 седмици.
-
Ще загубя ли SEO класирането си при смяна от Magento на WooCommerce?
Не, ако настроите 301 redirects от всички стари Magento URL-и към новите WooCommerce адреси. Без пренасочвания Google индексира 404 грешки и трафикът спада. Обикновено има леко колебание за 2-4 седмици.
-
Могат ли да се прехвърлят паролите на клиентите от Magento?
Не директно. Magento използва различен hashing алгоритъм (SHA-256 в Magento 2, MD5 в Magento 1). Стандартният подход е да създадете акаунтите с нови пароли и да изпратите имейл за смяна на паролата.
-
Кой инструмент е най-подходящ за автоматична миграция от Magento?
Cart2Cart и LitExtension са популярни SaaS решения. WP All Import позволява импорт от CSV/XML с гъвкав mapping. Нито един инструмент не покрива 100% от случаите – bundle продукти и custom options винаги изискват ръчна работа.
-
Трябва ли да мигрирам всички стари поръчки от Magento?
Не задължително. Поръчки по-стари от 2 години рядко имат практическа стойност и забавят WooCommerce админ панела. Архивирайте ги в CSV и импортирайте само последните 12-24 месеца.