Wróć do bloga

Import produktów WooCommerce: CSV, WP All Import czy ręcznie?

Import produktów WooCommerce działa, gdy narzędzie pasuje do danych. Wybierz CSV, WP All Import lub pracę ręczną bez uszkadzania własnych pól meta.

Jakub Czechowski

Buduje strony i sklepy internetowe w JC Web Studio, prowadzi StackCompass – publikację o architekturze treści i decyzjach stackowych – i współorganizuje CMS Conf, konferencję o systemach treści.

/ / 5 min czytania

Zespoły często pytają: „które narzędzie importu jest najlepsze dla WooCommerce?”. To złe pytanie. W standardowym sklepie z prostymi produktami każda opcja działa, a wybór jest banalny. Decyzja robi się trudniejsza w mocno dostosowanym katalogu, gdzie produkty mają liczbę sztuk w opakowaniu, dane zgodności producenta, PDF-y ze specyfikacją i hurtowe ceny zależne od roli. Wtedy właściwe narzędzie wynika z kształtu danych, a nie z porównania list funkcji. Wartości skalarne i pola strukturalne wymagają innych ścieżek importu, a zły wybór może uszkodzić katalog bez wyraźnego komunikatu o błędzie.

Natywny CSV obsługuje wartości skalarne, nie pola strukturalne

WooCommerce zawiera importer CSV, który radzi sobie z płaskimi polami własnymi lepiej, niż sugeruje jego reputacja. Pole post meta z jedną wartością można przypisać przez kolumnę Meta: your_meta_key. Jeśli sklep zapisuje liczbę sztuk w opakowaniu, nazwę producenta albo kod kraju jako zwykłe post meta z prefiksem _, natywny importer zazwyczaj przeniesie te wartości bez dodatkowej wtyczki. Obejmuje to większą część realnego katalogu, niż zakłada wiele zespołów – często większość pól własnych.

Ograniczeniem jest struktura. Natywny importer zapisuje wartość pod kluczem meta, ale nie buduje tablic ani struktur serializowanych wymaganych przez konkretną wtyczkę. Może zapisać JSON jako tekst, lecz ma to sens tylko wtedy, gdy kod odbierający oczekuje dokładnie takiego formatu i potrafi go odczytać. Listy, takie jak progi rabatów ilościowych, tabele cen według roli czy powtarzalne wiersze specyfikacji, wymagają więc importera, który rozumie ich schemat. Wtyczki hurtowe często udostępniają własne ścieżki importu, ponieważ ceny ilościowe mogą być zapisane jako serializowane meta, np. wwpp_post_meta_quantity_discount_rule_mapping. Ceny zależne od roli i ceny progowe należą do tej samej kategorii. Jeśli prowadzisz zamknięty katalog B2B z cenami zależnymi od roli, nie zakładaj, że ogólny importer CSV odtworzy jego reguły cenowe. Użyj importera wtyczki cenowej albo narzędzia skonfigurowanego dla wymaganego formatu serializacji.

Co natywny importer robi źle po cichu

Limit danych serializowanych jest udokumentowany. Porażki, które naprawdę bolą, to te wyglądające jak sukces.

Różnica wielkości liter może tworzyć klucze-widma. Jeśli zaimportujesz wartość do _price_USD, gdy sklep odczytuje _price_usd, proces może dodać drugi klucz zamiast zaktualizować właściwy. Front sklepu nadal pokazuje starą wartość, choć import wygląda na udany.

Ponowne importy mogą dopisywać zamiast aktualizować. Zależnie od sposobu dopasowania produktów i pól własne metadane mogą zostać dodane jako nowy wiersz zamiast zastąpić istniejącą wartość. Drugie przejście, które miało poprawić dane, tworzy wtedy duplikaty.

Powtarzające się wartości pod jednym kluczem są spłaszczane. Produktu z kilkoma wierszami meta pod tym samym kluczem nie da się wiarygodnie przedstawić w jednej kolumnie skalarnej. Jedna wartość może pozostać, a pozostałe zniknąć.

Wspólnym mianownikiem są ciche błędy. Dlatego próbne uruchomienie na środowisku testowym nie podlega negocjacji. Opisany tam przypadek pokazuje, jak powtórzone zadanie w tle może rozjechać stany magazynowe i ceny; import może zawieść podobnie, choć nadal wyglądać na udany. Zaimportuj dane do kopii sklepu, porównaj reprezentatywną próbkę ze źródłem i dopiero potem uruchom proces na produkcji.

Gdzie WP All Import zwraca koszt licencji

WP All Import Pro przydaje się w przypadkach strukturalnych, których natywne narzędzie nie modeluje. Czyta CSV, XML, Excel i Google Sheets, pozwala przekształcać dane podczas importu i mapować pola serializowane. Można go również skonfigurować tak, aby pobierał media z adresu URL do biblioteki WordPressa. Ma to znaczenie, gdy pole produktu powinno wskazywać lokalny załącznik, np. kartę charakterystyki albo dokumentację techniczną. Zapisanie źródłowego adresu URL w post meta nie jest tym samym co pobranie pliku, utworzenie załącznika i zapisanie identyfikatora lub adresu oczekiwanego przez motyw albo wtyczkę.

Koszt jest realny i wykracza poza licencję. Interfejs mapowania zawiera selektory i wyrażenia XPath, więc zakłada, że ktoś rozumie przełożenie pól źródłowych na docelowy schemat. Przy jednorazowym pliku products.csv taka konfiguracja może być czystym narzutem. WP All Import zwraca się wtedy, gdy importy są powtarzalne, strukturalne albo duże: przy cyklicznych synchronizacjach, plikach XML lub serializowanych regułach cenowych. Wraz ze wzrostem katalogu i złożoności przekształceń rozmowa przesuwa się w stronę przetwarzania partiami poza panelem administracyjnym, aby uniknąć limitów czasu PHP. Wtedy ważniejsze od interfejsu przesyłania pliku stają się walidacja, ponawianie zadań i idempotencja.

Kiedy ręczne wprowadzanie nadal wygrywa

Narzędzia importowe mają koszt stały: szablon kolumn, mapowanie pól, próbne uruchomienie i spisaną specyfikację danych źródłowych. Ręczne wprowadzanie omija tę konfigurację, a jego koszt rośnie w przybliżeniu proporcjonalnie do liczby produktów. Wygrywa w trzech sytuacjach: partia jest mała, dane są jednorazowe albo pola są na tyle relacyjne, że ich wiarygodne mapowanie kosztuje więcej niż ręczne wprowadzenie. Do ostatniej kategorii często należą powiązane reguły, ceny warunkowe i ręcznie dobierane media.

Jest też argument jakościowy. Osoba wprowadzająca złożony produkt może zauważyć ewidentnie błędną jednostkę albo brakujący wariant. Automatyczny import odtworzy wszystko, co znajduje się w źródle – również błędy i to na dużą skalę.

Próg opłacalności zależy od przygotowania danych

Realne porównanie dotyczy punktu przecięcia kosztów. Ręczne wprowadzanie kosztuje koszt_na_produkt × N. Import masowy kosztuje przygotowanie + (koszt_przebiegu × liczba_partii) + (niski_koszt_na_produkt × N). Przygotowanie obejmuje szablon, mapowanie i walidację, a niski_koszt_na_produkt zakłada czyste dane. W przypadku złożonych produktów różnica jednostkowa może sprawić, że import opłaci się nawet dla stosunkowo małej partii. Gdy istnieje już sprawdzony szablon, kolejne partie osiągają próg opłacalności szybciej.

Założenie zawarte w niski_koszt_na_produkt przesądza o wyniku: dane źródłowe muszą już pasować do szablonu kolumn. Porządkowanie niespójnego arkusza dostawcy, poprawianie jednostek, uzgadnianie SKU i uzupełnianie braków to praca ręczna, która może zniwelować oszczędności z automatyzacji. Warto wycenić przygotowanie danych osobno, ponieważ właśnie na tym etapie projekty importu masowego często przekraczają budżet.

Decyzja w skrócie

  • Płaskie skalarne pola meta, sporadyczny import → natywny CSV. Jest darmowy, zainstalowany i wystarczający.
  • Pola serializowane, media z adresów URL, powtarzalne importy albo synchronizacje ze źródłem danych → WP All Import Pro albo własny importer wtyczki cenowej dla jej reguł cenowych.
  • Małe, jednorazowe albo relacyjnie złożone zbiory danych → ręczne wprowadzanie; koszt konfiguracji może się nie zwrócić.

Niezależnie od narzędzia wykonaj kopię zapasową, uruchom import na środowisku testowym, porównaj reprezentatywną próbkę i dopiero potem przejdź na produkcję. Narzędzie określa, jakie dane możesz przenieść. To, czy trafią na właściwe miejsce, zależy od dopasowania ścieżki importu do ich kształtu oraz sprawdzenia wyniku przed pierwszym przebiegiem produkcyjnym.