Przejdź do treści
codecollab.pl
§ Blog import produktów woocommerce csv

Import i eksport produktów w WooCommerce - CSV bez bałaganu w katalogu

WooCommerce ma importer CSV w standardzie i w większości sklepów to wszystko, czego potrzebujesz - pod warunkiem że plik ma kolumny, które sklep rozumie

Krystian Kacik 10 min czytania
Spis treści

WooCommerce ma importer CSV w standardzie i w większości sklepów to wszystko, czego potrzebujesz - pod warunkiem że plik ma kolumny, które sklep rozumie. Nie trzeba do tego wtyczki za 200 zł rocznie ani programisty. Trzeba wiedzieć, jak wygląda poprawny plik, bo cała trudność masowego importu siedzi w przygotowaniu arkusza, a nie w klikaniu w panelu.

Ten tekst dotyczy sytuacji, w której źródłem produktów jest Twój arkusz: migracja z innego sklepu, katalog od producenta w Excelu, masowa zmiana cen albo eksport przed przebudową. Jeśli źródłem jest hurtownia, która daje plik odświeżany codziennie, to inna robota i opisałem ją osobno w tekście o imporcie produktów z pliku XML od hurtowni - tam liczy się harmonogram, klucz produktu i mapowanie kategorii, a nie jednorazowe wgranie.

Wbudowany importer - gdzie jest i co potrafi

Znajdziesz go w panelu: Produkty → Wszystkie produkty → Import. Ta sama strona ma przycisk Eksport. Obie funkcje są częścią WooCommerce, nie wtyczką, i działają na plikach CSV.

Importer robi trzy rzeczy:

  1. Tworzy nowe produkty z wierszy, których nie ma jeszcze w katalogu
  2. Aktualizuje istniejące, jeśli zaznaczysz odpowiedni checkbox i dopasuje produkt po ID albo SKU
  3. Mapuje kolumny - w drugim kroku pokazuje listę Twoich nagłówków i pozwala przypisać każdy do pola WooCommerce

Czego nie potrafi: nie usuwa produktów, których nie ma w pliku, nie importuje zamówień ani klientów, nie obsługuje plików XML i nie umie pobrać niczego z adresu URL po harmonogramie. Do tych rzeczy potrzebna jest wtyczka.

Zanim klikniesz Import: zrób kopię zapasową bazy. Import to operacja masowa i cofnięcie jej ręcznie przy 800 produktach jest niewykonalne. Jak robić kopię, która faktycznie się przywraca, opisałem w osobnym tekście.

Kolumny, które WooCommerce rozumie

Najprostsza droga do poprawnego pliku: najpierw wyeksportuj kilka produktów, które już masz. Dostaniesz CSV z gotowymi nagłówkami i zobaczysz na żywym przykładzie, jak sklep zapisuje ceny, kategorie i atrybuty. Ten plik jest Twoim szablonem - kasujesz wiersze, zostawiasz nagłówek i wklejasz swoje dane.

Kolumny, które w praktyce robią całą robotę:

KolumnaCo zawieraPułapka
IDnumer produktu w sklepiezostaw pusty przy nowych produktach
SKUTwój symbol produktumusi być unikalny, inaczej import przerwie
Typesimple, variable, variation, grouped, externalbrak wartości = produkt prosty
Regular pricecena podstawowakropka dziesiętna, nie przecinek
Sale pricecena promocyjnapusta kolumna kasuje promocję przy aktualizacji
Categorieskategoriehierarchia przez >, kilka kategorii przez przecinek
Imagesadresy zdjęćpełne URL-e po przecinku, pierwszy jest główny
In stock?1 albo 0pomylenie z kolumną Stock to klasyk
Stockilość sztukdziała tylko przy włączonym magazynie
Attribute 1 name / value(s)nazwa i wartości cechywartości po przecinku

Kategoria zapisana jako Ogród > Meble > Krzesła utworzy całą ścieżkę, jeśli jej nie ma. Cena 129,90 z przecinkiem zostanie odczytana jako 129 - to najczęstszy powód „dlaczego mam złe ceny po imporcie”.

Zdjęcia z URL-i: WooCommerce pobiera je na serwer w trakcie importu. Przy 500 produktach po trzy zdjęcia to 1500 pobrań w jednym przebiegu i najczęstsze miejsce, w którym import się zawiesza. Jeśli masz zdjęcia lokalnie, wgraj je najpierw do biblioteki mediów i podaj adresy z własnej domeny - idzie kilkukrotnie szybciej.

Kodowanie pliku, czyli skąd biorą się krzaki

Osobny akapit, bo to pochłania najwięcej cudzego czasu. WooCommerce oczekuje UTF-8. Excel w polskiej wersji domyślnie zapisuje CSV w kodowaniu Windows-1250, więc po imporcie zamiast „Wełniany szalik” masz „We?niany szalik” w 300 produktach naraz.

Trzy sposoby, żeby tego uniknąć:

  • W Excelu wybierz Zapisz jako → CSV UTF-8 (rozdzielany przecinkami), a nie zwykły CSV
  • Pracuj w Arkuszach Google i pobierz plik jako CSV - one zapisują w UTF-8 domyślnie
  • Sprawdź plik przed importem: otwórz go w Notatniku i zobacz, czy polskie znaki wyglądają poprawnie

Drugi ustawienie z tej rodziny to separator. Domyślnie przecinek; jeśli Twój arkusz używa średnika, ustaw go w Opcjach zaawansowanych w pierwszym kroku importu, zamiast przerabiać plik.

Warianty w CSV - miejsce, w którym import najczęściej się wykłada

Produkt z rozmiarami i kolorami zajmuje w pliku kilka wierszy: jeden dla produktu nadrzędnego i po jednym dla każdej kombinacji.

Wiersz nadrzędny:

  • Type = variable
  • Attribute 1 name = Rozmiar, Attribute 1 value(s) = S, M, L
  • Attribute 1 global = 1, jeśli używasz atrybutu zdefiniowanego globalnie w sklepie
  • Cena zostaje pusta - cenę ma wariant, nie rodzic

Wiersze wariantów:

  • Type = variation
  • Parent = id: i wartość z kolumny SKU albo ID rodzica z tego samego pliku
  • Attribute 1 value(s) = jedna wartość, na przykład M
  • Własne SKU, Regular price i Stock

Trzy błędy, które widuję w tych plikach najczęściej: wariant wskazuje na rodzica, którego nie ma w pliku ani w sklepie; wartość atrybutu w wariancie różni się od tej u rodzica choćby wielkością litery; rodzic ma wpisaną cenę, przez co sklep pokazuje ją zamiast cen wariantów. Wszystkie trzy dają ten sam objaw - produkt jest, ale nie da się go kupić.

Kolejność też ma znaczenie: rodzic musi być w pliku przed swoimi wariantami.

Aktualizacja zamiast duplikatów

Checkbox „Aktualizuj istniejące produkty” w pierwszym kroku importu decyduje o wszystkim. Odznaczony - każdy wiersz tworzy nowy produkt, nawet jeśli identyczny już istnieje. Zaznaczony - WooCommerce szuka dopasowania najpierw po ID, potem po SKU.

Stąd praktyczna zasada: SKU jest kluczem Twojego katalogu. Jeśli produkty nie mają SKU albo mają je zdublowane, masowa aktualizacja nie ma się o co zaczepić i skończysz z dwoma kompletami tego samego towaru.

Druga rzecz, którą trzeba wiedzieć: przy aktualizacji importer nadpisuje te kolumny, które są w pliku, i nie rusza reszty. To bardzo wygodne. Chcesz zmienić same ceny w 600 produktach? Zrób plik z dwiema kolumnami - SKU i Regular price - i wgraj go z zaznaczoną aktualizacją. Opisy, zdjęcia i stany zostaną nietknięte.

Uwaga na odwrotność: kolumna obecna w pliku, ale pusta, wyczyści pole w sklepie. Pusta kolumna Sale price skasuje wszystkie promocje. Jeśli czegoś nie zmieniasz, po prostu tej kolumny w pliku nie umieszczaj.

Duży plik i limity serwera

Importer przetwarza plik partiami i sam wraca po kolejną porcję, więc formalnie nie ma limitu wielkości. Praktycznie ograniczają Cię ustawienia PHP na hostingu:

  • upload_max_filesize - jeśli plik jest większy, formularz go nie przyjmie; obejście: wgraj CSV FTP-em do katalogu i użyj opcji importu z serwera
  • max_execution_time - zbyt krótki czas kończy partię błędem w połowie
  • memory_limit - przy produktach z długimi opisami i wieloma atrybutami 128 MB potrafi nie wystarczyć

Objaw wspólny dla wszystkich trzech jest identyczny: import staje na przykład na 40% i nie rusza dalej. Zamiast zgadywać, podziel plik na paczki po 300-500 wierszy i wgraj po kolei. Przy pierwszym imporcie na nowym serwerze i tak zaczynam od próbki 10 wierszy - w minutę widać, czy mapowanie kolumn jest dobre, zanim polecą wszystkie produkty.

Jeśli sklep regularnie dławi się takimi operacjami, problem jest w hostingu, nie w pliku - rozpisałem to w tekście o hostingu pod sklep WooCommerce.

Eksport - do czego naprawdę się przydaje

Eksporter ma cztery ustawienia: które kolumny wyeksportować, które typy produktów, z których kategorii oraz czy dołączyć własne pola meta (te dokładane przez wtyczki). Wynikiem jest plik CSV do pobrania.

Cztery zastosowania, w których korzystam z niego najczęściej:

  1. Masowa edycja w arkuszu. Eksport → poprawki w Excelu albo Arkuszach → import z aktualizacją. Szybsze niż klikanie i widzisz całość naraz
  2. Szablon do nowego pliku. Nagłówki i format wartości gotowe, bez zgadywania
  3. Zrzut katalogu przed większą zmianą. Kopia bazy jest ważniejsza, ale CSV z cenami sprzed migracji sprawdza się jako punkt odniesienia; przy przenosinach sklepu przydaje się razem z checklistą migracji bez utraty pozycji
  4. Przekazanie katalogu na zewnątrz. Do księgowości, do marketplace’u, do porównywarki

Czego eksporter nie obejmuje: zamówień, klientów, kuponów i recenzji. WooCommerce w podstawowej wersji nie ma eksportu zamówień - do tego trzeba wtyczki albo integracji. Jeśli chodzi Ci o przepływ zamówień między systemami, to nie jest robota dla CSV, tylko dla synchronizacji stanów i zamówień.

Kiedy natywny importer przestaje wystarczać

Granica jest dość wyraźna. Wbudowany importer wystarcza do jednorazowych i okresowych operacji na własnym pliku. Potrzebujesz czegoś więcej, gdy:

  • Źródłem jest XML albo API, nie CSV
  • Import ma chodzić automatycznie o określonej godzinie, bez klikania
  • Trzeba przekształcać dane w locie: doliczyć marżę, przeliczyć walutę, sklejać opis z kilku pól, pomijać produkty poniżej stanu magazynowego
  • Trzeba usuwać produkty, których zabrakło w nowym pliku
  • Kolumny źródła zmieniają nazwy przy każdej dostawie i mapowanie musi być odporne na bałagan

Wtedy używa się narzędzia do importu z harmonogramem albo pisze się integrację. Kiedy to się opłaca i jak wygląda taki układ przy stałej współpracy z hurtownią, opisałem w tekstach o dropshippingu i integracji hurtowni oraz o imporcie z pliku XML.

Kolejność, która oszczędza wieczór

Robocza procedura, której trzymam się przy każdym większym imporcie:

  1. Kopia zapasowa bazy i plików
  2. Eksport 5 istniejących produktów jako szablon nagłówków
  3. Przygotowanie pliku w UTF-8, ceny z kropką, SKU unikalne
  4. Import próbki 10 wierszy z odznaczoną aktualizacją
  5. Sprawdzenie w sklepie: cena, kategoria, zdjęcie, dostępność, wygląd karty
  6. Usunięcie produktów próbnych
  7. Import całości, partiami po 300-500 wierszy przy większych katalogach
  8. Kontrola liczby produktów w panelu i przegląd 10 losowych kart
  9. Wyczyszczenie cache, żeby na stronie pojawiły się nowe ceny

Krok 4 i 5 ludzie pomijają najczęściej i to one kosztują potem najwięcej.

Najczęstsze pytania

Jak zaimportować produkty do WooCommerce z pliku Excel? Zapisz arkusz jako CSV w kodowaniu UTF-8, a potem wejdź w Produkty → Import. Excel w formacie .xlsx nie jest obsługiwany bezpośrednio - importer przyjmuje wyłącznie CSV. W drugim kroku przypisz swoje nagłówki do pól WooCommerce; jeśli nazwałeś kolumny tak jak w eksporcie ze sklepu, mapowanie uzupełni się samo.

Dlaczego po imporcie mam podwójne produkty? Bo przy imporcie nie było zaznaczonej opcji aktualizacji istniejących produktów albo produkty nie mają SKU, po którym importer mógłby je dopasować. Zasada: bez unikalnego SKU każdy kolejny import to nowe produkty. Duplikaty da się usunąć hurtowo filtrując listę produktów po dacie dodania.

Czy da się zaimportować produkty z wariantami? Tak, ale każdy wariant to osobny wiersz z typem variation i wskazaniem rodzica w kolumnie Parent. Rodzic musi znaleźć się w pliku wcześniej niż jego warianty, mieć typ variable i pustą cenę, a wartości atrybutów muszą być zapisane identycznie u rodzica i w wariantach.

Jak zmienić ceny wszystkich produktów naraz? Wyeksportuj katalog, zostaw w pliku tylko kolumny SKU i Regular price, przelicz ceny w arkuszu i zaimportuj plik z zaznaczoną aktualizacją istniejących produktów. Pozostałe dane zostaną nietknięte, bo importer nadpisuje wyłącznie kolumny obecne w pliku.

Czy import spowolni sklep? Na czas trwania - tak, bo serwer przetwarza dane i pobiera zdjęcia. Dlatego większe importy robię poza godzinami szczytu i dzielę na paczki. Po zakończeniu wpływu na szybkość nie ma, chyba że wgrałeś zdjęcia prosto z aparatu - wtedy problemem są nie produkty, a ich waga.


Masz sklep, w którym coś nie działa tak, jak powinno? Buduję i przebudowuję sklepy internetowe na WooCommerce - od pojedynczej naprawy po przebudowę całej sprzedaży. Opisz, z czym się mierzysz, a odeślę wycenę z zakresem i terminem.

§ Porozmawiajmy o projekcie

Twój sklep zwalnia albo wygląda staro, a nie wiesz, od czego zacząć?

Opisz zakres w dwóch zdaniach albo podeślij link do sklepu. Wskażę, co poprawić najszybciej, a wycenę dostajesz na piśmie - bez „od X zł".

Porozmawiajmy o projekcie