WooCommerce

HPOS w WooCommerce: nowy sposób zapisu zamówień i co oznacza dla wtyczek

· Krzysztof Balicki

Magazyn z regałami pełnymi kartonów i wózkiem widłowym

HPOS WooCommerce, czyli High-Performance Order Storage, to nowy sposób przechowywania zamówień. Zamiast w tabelach wpisów WordPressa trafiają one do własnych tabel w bazie danych. Według dokumentacji HPOS dla deweloperów WooCommerce od wersji 8.2 to ustawienie domyślne w nowych sklepach. Co to oznacza dla właściciela sklepu? Przede wszystkim trzeba sprawdzić, czy zainstalowane wtyczki obsługują nowy zapis.

Czym jest HPOS w WooCommerce i czym różni się od starego zapisu zamówień?

HPOS przenosi zamówienia do osobnych tabel, zaprojektowanych pod potrzeby sklepu. Wcześniej lądowały tam, gdzie zwykłe wpisy. Każde zamówienie szło do tabel posts i postmeta, razem ze stronami, artykułami i danymi innych wtyczek (wszystko w jednym worku, jak to w WordPressie). Nowe rozwiązanie, znane wcześniej jako Custom Order Tables, korzysta z warstwy CRUD WooCommerce, czyli zestawu funkcji do tworzenia, odczytu, zmiany i usuwania danych. Efekt w praktyce? Sklep nie musi przekopywać jednej ogromnej tabeli, żeby znaleźć transakcję. Baza oddycha, nawet gdy zamówień przybywa.

Od kiedy HPOS jest domyślny i czy dotyczy już istniejących sklepów?

Od WooCommerce 8.2, wydanego w październiku 2023, HPOS jest stabilny i włączony domyślnie w nowych instalacjach. W istniejących sklepach przełączasz go sam. Jak opisuje historia wdrażania nowych tabel, plan funkcji opublikowano w styczniu 2022, a od maja 2022 twórcy zapraszali do testowania migracji na prawdziwych sklepach. Sama aktualizacja starszej instalacji niczego w zapisie nie zmienia. Decyzja należy do administratora. Ale nowy sklep startuje od razu na nowych tabelach. I tu jest haczyk: każda wtyczka, którą w nim zainstalujesz, musi z nimi współpracować.

Jak działają nowe tabele zamówień: dane główne, kopia i tryb zgodności

Przy włączonym HPOS jedne tabele są autorytatywne, czyli sklep z nich czyta i do nich zapisuje. Drugie robią za kopię synchronizowaną z głównymi. Gdy opcja woocommerce_custom_orders_table_enabled ma wartość true, główne są nowe tabele, a posts i postmeta trzymają kopię. Przy false role się odwracają. Proste. Tryb zgodności (Compatibility mode) wypełnia tabele HPOS danymi ze starego zapisu i pilnuje, żeby obie strony były aktualne. Przełącznik siedzi w ścieżce WooCommerce, Ustawienia, Zaawansowane, Własne magazyny danych. No i dzięki synchronizacji powrót do poprzedniego modelu nie grozi utratą zamówień.

Zgodność wtyczek z HPOS: które rozszerzenia mogą sprawiać problemy?

Kłopoty robią wtyczki, które grzebią w zamówieniach bezpośrednio w posts i postmeta, zamiast iść przez API WooCommerce. Z mojego doświadczenia najczęściej chodzi o kilka obszarów:

  • integracji z firmami kurierskimi i systemami do fakturowania,
  • eksportów zamówień i raportów sprzedaży, także do Google Analytics 4,
  • dodatków zmieniających statusy zamówień,
  • własnych zapytań SQL w motywie lub plikach funkcji.

Masz w sklepie rozszerzenie niezgodne z nowym zapisem? Wtedy opcja HPOS zostaje zablokowana w zakładce WooCommerce, Ustawienia, Zaawansowane, Funkcje. Poprawienie kodu to robota autora wtyczki, który ma do dyspozycji materiały dla deweloperów. W sumie nic dziwnego, że rozszerzenia z aktywnym wsparciem i regularnymi aktualizacjami dostają poprawki szybciej niż porzucone darmowe dodatki.

Jak przygotować sklep i włączyć HPOS WooCommerce krok po kroku

Najpierw kopia zapasowa. Potem lista niezgodnych wtyczek i tryb zgodności, a dopiero na końcu przełączenie sklepu na nowe tabele. Kolejność wygląda tak:

  1. Wykonaj kopię bazy danych i plików.
  2. Zaktualizuj WooCommerce oraz wszystkie wtyczki.
  3. Sprawdź ostrzeżenia o niezgodności w ustawieniach Funkcje.
  4. Włącz tryb zgodności i poczekaj, aż synchronizacja się zakończy.
  5. Wybierz High-Performance Order Storage i zapisz stronę.
  6. Przetestuj zamówienie, płatność, wiadomości e-mail i integracje.

Polecam przejść całą procedurę najpierw na kopii testowej, czyli na stagingu, a dopiero potem ruszać produkcję. Aha, i jedno: zapisuj stronę po każdej zmianie, bo bez tego przełączenie po prostu nie zadziała.

Co zrobić, gdy wtyczka nie działa z nowym zapisem zamówień?

Tymczasowo wróć do zapisu w tabelach wpisów WordPressa i zgłoś problem autorowi wtyczki. Po zakończonej synchronizacji wybierz opcję WordPress posts storage (legacy), w razie potrzeby wyłącz tryb zgodności i zapisz ustawienia. Tyle. Gdy wtyczka dostanie aktualizację, HPOS włączysz ponownie tą samą ścieżką co za pierwszym razem. A jeśli sklep stoi na nietypowych, własnych integracjach? Wtedy rozwiązaniem bywa przeróbka istniejącego kodu albo wtyczka napisana na zamówienie, którą może przygotować na przykład zespół K4.pl.

Nie ma co się oszukiwać, HPOS WooCommerce wyznacza kierunek, w którym zmierza zapis zamówień. Moim zdaniem lepiej już teraz sprawdzić zgodność wtyczek i zaplanować przełączenie, niż czekać, aż coś się wysypie.

Najczęstsze pytania

Czy muszę włączyć HPOS w istniejącym sklepie?

Nie od razu, bo w starszych instalacjach decyduje administrator. Ale nowe sklepy działają na nim domyślnie, więc przygotowanie się do zmiany to dobry pomysł. Zacznij od przeglądu wtyczek i testu na kopii.

Czy po włączeniu HPOS stracę stare zamówienia?

Nie. Migracja i tryb zgodności kopiują dane między tabelami, a dotychczasowy zapis pełni rolę kopii. Mimo to przed każdą zmianą zrób pełną kopię bazy. Na wypadek nieprzewidzianych błędów, bo te zdarzają się zawsze wtedy, kiedy najmniej się ich spodziewasz.

Jak sprawdzić, czy wtyczka jest zgodna z HPOS?

WooCommerce pokazuje niezgodne rozszerzenia w ustawieniach Funkcje i blokuje wtedy przełącznik. Masz wątpliwości? Zapytaj autora wtyczki o wsparcie High-Performance Order Storage. Najlepiej przed aktualizacją sklepu, a nie po niej.