Konfiguracja WooCommerce¶
Strona ta opisuje pełen cykl konfiguracji sklepu WooCommerce w panelu — od dodania konta przez wygenerowanie kluczy REST API w WP-Admin, po mapowanie ról cenowych i wgranie własnego CSS. Każdy sklep buyspace.pl (master / eu / de / test / produkcja) jest dla panelu osobnym kontem — mają osobne klucze, osobne cenniki, osobne mapowania.
Jeżeli szukasz „jak wystawić produkt na Woo" — to jest w Listings → WooCommerce. Tu chodzi o konfigurację konta, nie o publikację oferty.
Krótko
- Konfiguracja jest w
Marketplace → Konfiguracja → WooCommerce. - Klucz REST API (
Consumer Key+Consumer Secret) generujesz w WP-Admin sklepu, nie w panelu. - Mu-plugin po stronie WordPressa dodaje endpointy spoza
wc/v3(deploy CSS, naprawa URLi, taksonomie BL). Bez mu-pluginu basic-flow działa, ale stracisz część funkcji. - Każdy sklep ma swój
locale(pl_PL,de_DE, …) — to wpływa na język treści i ustawienia WP. - Cenniki: per-rola WooCommerce → grupa cenowa BaseLinkera + osobny mnożnik.
Dodanie konta sklepu w panelu¶
Krok 1 — Wygeneruj klucz REST API w WP-Admin¶
- Zaloguj się do administracji sklepu (
https://buyspace.pl/wp-admin/— odpowiednio dla każdej instancji). - WooCommerce → Ustawienia → Zaawansowane → REST API → Dodaj klucz.
- Wypełnij:
- Opis — np. „Panel AIO — produkcyjny",
- Użytkownik — administrator sklepu,
- Uprawnienia — Read/Write.
- Kliknij Wygeneruj klucz API. WordPress pokaże
Consumer Key(zaczyna się odck_…) iConsumer Secret(cs_…).
Klucz secret zobaczysz tylko raz
Po zamknięciu strony WooCommerce nie pokaże ponownie wartości secret. Skopiuj oba klucze od razu do bezpiecznego miejsca (Bitwarden, folder panel-aio / woo-buyspace). Jeśli zgubisz secret — usuń klucz w WP-Admin i wygeneruj nowy.
Krok 2 — Dodaj sklep w panelu¶
- Panel → Marketplace → Konfiguracja → Marketplace'y → WooCommerce → Dodaj konto.
- Wypełnij:
- Etykieta — np. „buyspace.pl (prod)" lub „buyspace.eu",
- Adres sklepu (URL) — pełny URL sklepu, np.
https://buyspace.pl, - Consumer Key — wartość
ck_…, - Consumer Secret — wartość
cs_….
- Kliknij Zapisz konfigurację. Panel sprawdzi
GET /wp-json/wc/v3/products?per_page=1i pokaże ✅ jeśli REST jest dostępny.
Krok 3 — Konfiguracja sklepu (/marketplace/config/platforms/woocommerce/konfiguracja)¶
Po zapisaniu konta wejdź w Konfiguracja WooCommerce (przycisk obok karty WooCommerce w Marketplace'y). Tam ustawiasz wszystkie szczegóły publikacji — strona ma sześć sekcji:
| Sekcja | Co ustawia |
|---|---|
| Mapowanie kolorów (hex) | Jakie wartości #RRGGBB mają trafić do atrybutu Kolor w Woo (np. „Bordowy" → #7a1428). Działa razem z pluginem swatchy. Przycisk Załaduj domyślne kolory wpisuje 12 standardowych odcieni używanych w buyspace.pl. |
| Identyfikatory WooCommerce | ID atrybutów (Kolor = 2, Rozmiar = 1 domyślnie), ID zakładki „Dodatkowe informacje" z pluginu Barn2 Product Tabs, ID posta Additional CSS customizera, ID domyślnej kategorii dla nowych produktów. |
| Mapowanie cen wg ról | Dla każdej roli WooCommerce (subscriber, wholesale, …) wpisujesz docelową grupę cenową BaseLinkera i mnożnik. Patrz Cenniki niżej. |
| Język sklepu / Locale | Jeden z 11 obsługiwanych: pl_PL · de_DE · en_GB · fr_FR · it_IT · es_ES · nl_NL · cs_CZ · sk_SK · sv_SE · sl_SI. |
| Mapowanie kategorii wg linii produktowej | Linia produktowa BL (np. ECCO) → lista ID kategorii Woo (np. 103, 117). Używane przy auto-kategoryzacji w sync. |
| Limit zdjęć | Maks. ilu zdjęć panel pchnie do Woo na produkt (domyślnie 11). Zwiększanie ponad ~15 grozi timeoutem POST /products. |
| Dodatkowy CSS | Pole tekstowe ze stylami CSS specyficznymi dla tego sklepu. Po zapisaniu trzeba uruchomić skrypt deploy_css żeby wgrać je do WP — patrz Wdrożenie CSS. |
Po wszystkich zmianach kliknij Zapisz konfigurację. Następna publikacja oferty użyje nowych wartości.
Mu-plugin po stronie WordPressa¶
WooCommerce REST API (wc/v3) pokrywa standardowe operacje na produktach, ale panel wymaga kilku custom endpointów, które wnosi 00-buyspace-mail-and-newsletter.php (oraz mniejsze mu-pluginy w windmill/f/infra/wordpress/mu-plugins/).
Co dorzucają mu-pluginy:
- SMTP routing —
wp_mail()idzie przez Mailcow (mail.aiofactory.pl), a nie przez systemowysendmail(którego w kontenerze nie ma). - Listmonk newsletter hook — formularz CF7 #323 z homepage'u dopisuje subskrybenta do listy „Opt-in" w Listmonku.
- Endpointy do deploy CSS i fix domain URLs — patrz Wdrożenie CSS i Migracja sklepu.
- Taksonomie kompatybilne z atrybutami BL — żeby
attr_kolor_id/attr_rozmiar_idz konfiguracji panelu nie rozjeżdżały się z ID-kami w bazie WP.
Bez mu-pluginu działa basic flow
Standardowe wystawianie produktów (push_simple, pull_from_woo) działa nawet bez mu-pluginu. Stracisz natomiast: deploy CSS bez ręcznej edycji theme'u, bezpieczną migrację domeny po IP failoverze, integrację z Listmonkiem dla newslettera.
Mu-pluginy instalowane są raz przy provisioning sklepu — patrz windmill/f/infra/wordpress/provision_store.py. Re-instalacja: skopiuj plik(i) z repo do wp-content/mu-plugins/ w kontenerze WP (przez docker exec na host-mom lub host-dad).
Cenniki — (cennik1 + cennik2) × współczynnik¶
Reguła cenowa Woo jest taka sama jak na pozostałych platformach (patrz Listings → Model cenowy). Konfiguracja per-konto:
W panelu (Konfiguracja WooCommerce → Mapowanie cen wg ról) podajesz dla każdej roli WooCommerce:
| Pole | Co znaczy | Przykład |
|---|---|---|
| Nazwa roli WC | Nazwa roli z WP (operator wpisuje ręcznie, panel zamienia na slug) | Hurtownik → hurtownik |
| Grupa cenowa Baselinker | ID cennika BL z listy 10 predefiniowanych | 47023 (Hurt karton 32 %) |
| Mnożnik | Współczynnik z reguły powyżej (≈ marża + VAT) | 1.32 |
Cennik2 (np. wkalkulowany koszt logistyki danego sklepu) ustawiasz osobno — pole grupa cenowa #2 na karcie konta WooCommerce w sekcji Marketplace'y. Jeśli zostawisz puste, panel używa starej reguły cennik1 × współczynnik.
Status rolloutu
(cennik1 + cennik2) × współczynnik działa end-to-end po stronie serwerowej dla WooCommerce (TASK-290). Wszystkie ścieżki publikacji (push_simple, push_variable, update_offer) honorują obie wartości.
Wdrożenie CSS¶
Tradycyjny sposób edycji wyglądu sklepu Woo to motyw + pliki PHP. My omijamy motyw i zamiast tego nadpisujemy WordPress Customizer → Additional CSS przez REST API mu-pluginu. Plus: zmiany są niezależne od tematu — jeśli właściciel zmieni motyw, CSS nadal działa.
Procedura:
- W panelu (Konfiguracja WooCommerce → Dodatkowy CSS) wpisujesz / edytujesz CSS.
- Klikasz Zapisz konfigurację.
- Otwierasz w nowej karcie Windmilla —
f/marketplace/woocommerce/deploy_css— i klikasz Run, wybierając konto sklepu. - Skrypt zaciąga CSS z konfiguracji konta i
POST-uje do WordPressa pod ID posta z pola „ID posta Additional CSS" (np. 2035).
ID posta Additional CSS musi istnieć
To jest stały post w WP customizerze — nie tworzymy go z panelu. Jeśli nigdy nie był ustawiony, wejdź do WP-Admin → Wygląd → Dostosuj → Dodatkowy CSS i zapisz cokolwiek raz; WP utworzy post i pokaże jego ID.
Domyślny zestaw CSS dla buyspace.pl jest w windmill/f/marketplace/woocommerce/buyspace-description.css — możesz go skopiować jako punkt startowy.
Migracja sklepu między hostami¶
Po IP-failoverze (host-mom → host-dad) lub planowej migracji baza WP zostaje, ale URLi w treści produktów odnoszą się do starego hosta (np. obrazki na master.buyspace.pl/...). Skrypt naprawczy:
Co robi: przepisuje URLi w description, gallery, image_meta wszystkich produktów Woo. Uruchamiasz ręcznie z UI Windmilla po failoverze (nie ma cron — zbyt destrukcyjny).
Synchronizacja periodyczna¶
| Zadanie | Częstotliwość | Skrypt |
|---|---|---|
| Pobieranie zgłoszeń klienta z notatek zamówień | co 10 min | f/marketplace/woocommerce/fetchers/issues.py |
Snapshot ofert (pull_from_woo) |
uruchamiane z UI + cron | f/marketplace/woocommerce/pull_from_woo.ts |
Push raport (push_report) |
po każdej operacji push | f/marketplace/woocommerce/push_report.ts |
Klucz REST API jest stały — nie ma OAuth refresh dla WooCommerce. Klucz wygasa tylko jeśli właściciel ręcznie usunie go w WP-Admin → wówczas 401 Unauthorized we wszystkich operacjach do czasu wpisania nowego.
Troubleshooting¶
| Objaw | Co zrobić |
|---|---|
401 Unauthorized |
Klucz REST API zrewokowany w WP-Admin. Wygeneruj nowy (krok 1) i wpisz w panelu. |
404 rest_route_not_found |
WordPress nie ma przepisanych permalinks albo brakuje mu-pluginu. Sprawdź Ustawienia → Bezpośrednie odnośniki w WP-Admin — kliknij Zapisz nawet bez zmian. |
duplicate_sku przy publikacji rodziny |
SKU już jest w Woo. Wykonaj Refresh now w Marketplace → Oferty → WooCommerce — pull_from_woo zsynchronizuje istniejące. |
| Variation utworzony, ale nie widać go w sklepie | Cache WP. incus exec web -- docker exec buyspace-prod-wordpress-1 wp cache flush --allow-root lub odczekaj ~5 min. |
| Ceny rozjechane WP ↔ panel | Najpierw Refresh now; potem ponowna publikacja przez Wystaw. |
Test connection zwraca timeout |
Sklep w trakcie restartu albo failovera — sprawdź Inwentarz Usług. |
Dane techniczne (appendix)¶
- Tabela stanu:
marketplaceAccounts(Convex).extra.woo_configtrzyma mapowania,extra.role_pricing— cenniki. - UI konfiguracji:
dashboard/src/routes/marketplace/config/platforms/woocommerce/konfiguracja/+page.svelte(połączenie konta —[platform]/connect/+page.svelte). - Skrypty Windmill:
f/marketplace/woocommerce/{push_simple,push_variable,pull_from_woo,deploy_css,fix_domain_urls}+ libf/marketplace/woocommerce/lib/{api,pricing,builders,product,variations}. - Mu-pluginy:
windmill/f/infra/wordpress/mu-plugins/. Provisioning:provision_store.py(WP-CLI przez SSH na host-mom). - Endpoint testu:
GET {base_url}/wp-json/wc/v3/products?per_page=1— używany przez przycisk Test connection.