Import i eksport CSV
Rozszerzenie importera/eksportera CSV WooCommerce o kolumny danych prawnych, GPSR, oświadczeń środowiskowych i innych pól wymaganych przez polskie i unijne prawo.
Obsługiwane pola CSV
Dział zatytułowany „Obsługiwane pola CSV”| Kolumna CSV | Meta key | Typ | Opis |
|---|---|---|---|
polski_unit_price_base |
_polski_unit_price_base |
float | Bazowa cena jednostkowa |
polski_unit_price_unit |
_polski_unit_price_unit |
string | Jednostka ceny jednostkowej |
polski_unit_price_amount |
_polski_unit_price_product_amount |
float | Ilość produktu |
polski_delivery_time |
_polski_delivery_time_id |
int | ID czasu dostawy |
polski_gpsr_responsible |
_polski_gpsr_responsible |
string | Osoba odpowiedzialna (GPSR) |
polski_power_supply |
_polski_power_supply |
string | Zasilanie |
polski_defect_description |
_polski_defect_description |
string | Opis wady |
polski_withdrawal_exempt |
_polski_withdrawal_exempt |
bool | Wyłączenie prawa odstąpienia |
polski_ingredients |
_polski_ingredients |
string | Składniki |
polski_nutrients |
_polski_nutrients |
string | Wartości odżywcze |
polski_nutrient_reference_unit |
_polski_nutrient_reference_unit |
string | Referencyjna wartość odżywcza |
polski_nutri_score |
_polski_nutri_score |
string | Wynik Nutri |
polski_alcohol_content |
_polski_alcohol_content |
float | Zawartość alkoholu |
polski_place_of_origin |
_polski_place_of_origin |
string | Kraj pochodzenia |
polski_net_filling |
_polski_net_filling_quantity |
string | Ilość netto |
polski_gpsr_manufacturer_name |
_polski_gpsr_manufacturer_name |
string | GPSR - Nazwa producenta |
polski_gpsr_manufacturer_address |
_polski_gpsr_manufacturer_address |
string | GPSR - Adres producenta |
polski_gpsr_manufacturer_contact |
_polski_gpsr_manufacturer_contact |
string | GPSR - Manufacturer contact |
polski_gpsr_importer_name |
_polski_gpsr_importer_name |
string | GPSR - Nazwa importera |
polski_gpsr_importer_address |
_polski_gpsr_importer_address |
string | GPSR - Adres importera |
polski_gpsr_importer_contact |
_polski_gpsr_importer_contact |
string | GPSR - Importer contact |
polski_gpsr_responsible_person |
_polski_gpsr_responsible_person |
string | GPSR - Osoba odpowiedzialna |
polski_gpsr_responsible_address |
_polski_gpsr_responsible_address |
string | GPSR - Responsible person address |
polski_gpsr_responsible_contact |
_polski_gpsr_responsible_contact |
string | GPSR - Responsible person contact |
polski_gpsr_product_identifier |
_polski_gpsr_product_identifier |
string | GPSR - Identyfikator produktu |
polski_gpsr_safety_warnings |
_polski_gpsr_safety_warnings |
string | GPSR - Ostrzeżenia dotyczące bezpieczeństwa |
polski_gpsr_instructions |
_polski_gpsr_instructions |
string | GPSR - Instrukcje bezpieczeństwa |
polski_durability_guarantee_months |
_polski_durability_guarantee_months |
int | Gwarancja trwałości (miesięcy) |
polski_update_period_months |
_polski_update_period_months |
int | Bezpłatne aktualizacje oprogramowania (miesiące) |
polski_repair_info |
_polski_repair_info |
string | Informacje dotyczące naprawy |
polski_gtin |
_polski_gtin |
string | GTIN / EAN (fallback) |
polski_green_claim_basis |
_polski_green_claim_basis |
string | Podstawa twierdzeń ekologicznych |
polski_green_claim_cert_url |
_polski_green_claim_cert_url |
string | Link do certyfikatu środowiskowego |
polski_green_claim_expiry |
_polski_green_claim_expiry |
string | Data ważności certyfikatu środowiskowego |
Przykładowy plik CSV
Dział zatytułowany „Przykładowy plik CSV”ID,SKU,Name,polski_gpsr_manufacturer_name,polski_gpsr_manufacturer_address,polski_gpsr_manufacturer_contact,polski_gtin,polski_place_of_origin,polski_unit_price_base,polski_unit_price_unit,polski_delivery_time123,SKU-001,"Cotton T-shirt","Producer XYZ Sp. z o.o.","ul. Fabryczna 1, 00-001 Warsaw","[email protected]","5901234123457","PL",1,"szt",12456,SKU-002,"Rapeseed oil 1L","Olejarnia ABC","ul. Polna 5, 60-001 Poznan","[email protected]","5901234567890","PL",1,"l",8Import CSV
Dział zatytułowany „Import CSV”Przez panel admina
Dział zatytułowany „Przez panel admina”- Przejdź do WooCommerce > Produkty > Import
- Wybierz plik CSV
- Na etapie mapowania kolumn - kolumny Polski for WooCommerce pojawią się automatycznie w sekcji Polski for WooCommerce
- Zmapuj kolumny CSV na odpowiednie pola
- Uruchom import
Przez WP-CLI
Dział zatytułowany „Przez WP-CLI”wp wc product_csv_importer run /sciezka/do/pliku.csv --user=adminProgramowo
Dział zatytułowany „Programowo”// Wtyczka nie dodaje własnego filtra importu. Kolumny zapisuje hook// WooCommerce, więc wygrywa to, co uruchomi się po nim.add_filter('woocommerce_product_import_inserted_product_object', function ($product, $data) { if (! empty($data['polski_gtin']) && strlen((string) $data['polski_gtin']) !== 13) { $product->update_meta_data('_polski_gtin', ''); } return $product;}, 20, 2);Eksport CSV
Dział zatytułowany „Eksport CSV”Przez panel admina
Dział zatytułowany „Przez panel admina”- Przejdź do WooCommerce > Produkty > Eksport
- W sekcji Kolumny do eksportu zaznacz kolumny z grupy Polski for WooCommerce
- Opcjonalnie filtruj po kategorii, statusie lub typie produktu
- Kliknij Generuj CSV
Przez WP-CLI
Dział zatytułowany „Przez WP-CLI”wp wc product_csv_exporter run --filename=produkty-polski.csv --user=adminFiltrowanie kolumn eksportu
Dział zatytułowany „Filtrowanie kolumn eksportu”// Kolumny rejestrują własne hooki eksportu WooCommerce, więc swoje dodaj// dokładnie tak samo, jak robi to wtyczka.add_filter('woocommerce_product_export_column_names', function (array $columns): array { $columns['custom_field'] = 'Pole własne'; return $columns;});
add_filter('woocommerce_product_export_product_column_custom_field', function ($value, $product) { return $product->get_meta('_my_custom_field');}, 10, 2);Co sprawdza importer
Dział zatytułowany „Co sprawdza importer”Bardzo niewiele i jest to celowe. Każda zmapowana kolumna przechodzi przez
sanitize_text_field() z WordPressa i trafia do produktu bez zmian. Jedyny
wyjątek to kolumna z wartościami odżywczymi, którą wtyczka rozkłada z listy
nazwa=wartość z powrotem na strukturę, w jakiej ją przechowuje.
Nic nie weryfikuje cyfry kontrolnej GTIN, adresu e-mail, kodu kraju, nazwy alergenu ani litery Nutri-Score, nie powstaje też osobny log importu. Błędna wartość zaimportuje się jako błędna wartość, więc plik trzeba sprawdzić przed importem, a nie po nim.
Powtarzanie tych samych danych GPSR w wielu produktach
Dział zatytułowany „Powtarzanie tych samych danych GPSR w wielu produktach”Nie ma ekranu wartości domyślnych, na którym można się oprzeć: ustawienia GPSR obejmują tryb wyświetlania i tytuł sekcji, nic więcej. Aby przypisać wielu produktom tego samego producenta, powtórz kolumnę w każdym wierszu CSV, co arkusz kalkulacyjny wypełnia jednym przeciągnięciem:
ID,polski_gpsr_manufacturer_name,polski_gpsr_manufacturer_address,polski_gpsr_manufacturer_contactImport aktualizuje wyłącznie kolumny obecne w pliku, więc CSV zawierający tylko ID i kolumny GPSR nie rusza pozostałych pól produktu.
Rozwiązywanie problemów
Dział zatytułowany „Rozwiązywanie problemów”Kolumny Polski nie pojawiają się w mapowaniu - upewnij się, że wtyczka Polski for WooCommerce jest aktywna. Kolumny rejestrowane są hookiem woocommerce_csv_product_import_mapping_options.
Import kończy się timeout - zwiększ max_execution_time PHP lub użyj WP-CLI do importu dużych plików.
Znaki specjalne są uszkodzone - upewnij się, że plik CSV jest zapisany w kodowaniu UTF-8 (bez BOM).
Wartości liczbowe nie importują się - separator dziesiętny w pliku CSV powinien być kropką (.), nie przecinkiem.
Zgłaszanie problemów: github.com/wppoland/polski/issues