Przejdź do głównej zawartości

Konfiguracja

Pair Pro przechowuje ustawienia w opcji pair_pro_settings. Strona ustawień znajduje się pod WooCommerce > Pair Pro i wymaga uprawnienia manage_woocommerce.

  • Enable (enabled), główny przełącznik. Gdy wyłączony, blok nie jest renderowany.
  • Heading (heading), nagłówek nad blokiem “Frequently bought together”. Puste pole oznacza wbudowaną wartość domyślną, przetłumaczoną na język sklepu (po angielsku “Frequently bought together”). Puste nie znaczy już “bez nagłówka”, zobacz Nagłówki i ich przełączniki niżej.
  • Show this heading (show_heading, domyślnie włączone), pole wyboru obok nagłówka. Odznacz, aby wyrenderować blok zupełnie bez nagłówka.
  • Products (count), liczba pokazywanych produktów, ograniczona do zakresu 1-6, domyślnie 3.
  • Columns (columns), liczba kolumn siatki, ograniczona do zakresu 1-6, domyślnie 3.
  • Add all to cart (add_all), pokazuje przycisk dodający cały zestaw do koszyka jednym kliknięciem.
  • In stock only (in_stock_only), pokazuje wyłącznie produkty dostępne w magazynie.
  • Orders to analyse (scan_orders), liczba najnowszych opłaconych zamówień skanowanych pod kątem współzakupów, ograniczona do zakresu 20-1000, domyślnie 150.
  • Bundle discount (bundle_discount), procent rabatu, gdy cały zestaw trafi do koszyka, ograniczony do zakresu 0-90, domyślnie 0, czyli bez rabatu.
  • Manual curation (manual_enabled), domyślnie włączone, dodaje metabox Pair recommendations w edytorze produktu.
  • Curation mode (manual_mode), prepend (ręczne wybory prowadzą, automat uzupełnia resztę) albo replace (tylko ręczne wybory). Domyślnie prepend.
  • Category rules (rules_enabled, category_rules), domyślnie wyłączone. Do 6 reguł w formie “gdy kategoria A, pokaż kategorię B”.
  • A/B testing (ab_enabled), domyślnie wyłączone, wraz ze strategią wariantu B (ab_strategy_b): related, tags, bestsellers albo newest. Domyślnie bestsellers.
  • Analytics (analytics_enabled), domyślnie włączone, zapisuje wyświetlenia, kliknięcia i dodania do koszyka przypisane do kliknięcia.
  • Thank-you page (place_thankyou), domyślnie włączone, oraz Checkout (place_checkout), domyślnie wyłączone, ze wspólnym nagłówkiem Placement heading (place_heading, puste pole oznacza przetłumaczoną wartość domyślną, po angielsku “You may also like”) i własnym przełącznikiem Show this heading (show_place_heading, domyślnie włączonym).

Każdy z dwóch nagłówków na froncie to dwa ustawienia, pole tekstowe i pole wyboru, bo jedno pole nie odpowie na dwa pytania:

Pole Tekst Przełącznik Dotyczy
Heading heading show_heading Bloku Frequently bought together na karcie produktu
Placement heading place_heading show_place_heading Miejsc na stronie podziękowania i w kasie

Pole tekstowe decyduje, co nagłówek mówi. Zostawione puste rozwiązuje się przy renderze do wartości domyślnej przetłumaczonej na język sklepu, i dlatego wartość domyślna w paczce jest pustym ciągiem: literał w pliku konfiguracyjnym nigdy nie jest wywołaniem gettext, więc zapisanie tam angielskiego zamroziłoby angielski w bazie dla każdego języka.

Pole wyboru decyduje, czy nagłówek w ogóle się wypisze. Przy odznaczonym h2 jest pomijany, ale <section> dostaje aria-label z przetłumaczonego zapasu zamiast pustego ciągu, więc czytnik ekranu nadal zapowiada blok.

Żaden z tych przełączników nie dotyczy bloku edytora Pair Recommendations, który ma własny atrybut heading.

Do 1.7.3 wyczyszczenie pola nagłówka było sposobem na usunięcie tego nagłówka, bo obie ścieżki renderowania wypisywały h2 tylko wtedy, gdy tekst nie był pusty. Od 1.7.4 puste pole znaczy “użyj przetłumaczonej wartości domyślnej”, więc sama ta zmiana wyhodowałaby nagłówki na sklepach, które celowo je usunęły.

Tak się nie dzieje. Przy aktualizacji zapisane ustawienie bez klucza przełącznika jest odczytywane jako aktualizacja, a każdy przełącznik ustawia się z tego, co mówiło jego stare pole tekstowe: pusty ciąg wyłącza ten przełącznik, cokolwiek innego zostawia go włączonym. Oba przełączniki są rozpatrywane niezależnie, więc sklep, który wyczyścił jeden nagłówek, a drugi zostawił, dostaje dokładnie to. Świeża instalacja jest zasiewana z obecnymi już obydwoma przełącznikami, więc nowy sklep nigdy nie zostanie wzięty za zaktualizowany.

Po użyciu przycisku Add all to cart identyfikatory produktów zestawu trafiają do sesji WooCommerce. Przy każdym przeliczaniu opłat (woocommerce_cart_calculate_fees) Pair Pro sprawdza, czy wszystkie produkty z zestawu nadal są w koszyku, i jeśli tak, dolicza procent jako ujemną opłatę koszyka. Usunięcie któregokolwiek z nich kasuje rabat przy najbliższym przeliczeniu i czyści zapamiętany zestaw.

Przy włączonej kuracji edytor produktu dostaje metabox Pair recommendations, w którym wskazujesz produkty dla tego konkretnego produktu. Wybór ląduje w meta _pair_manual_recommendations i wchodzi przez filtr pair/recommendations darmowej wtyczki, więc dotyczy bloku “You may also like” na karcie produktu. prepend stawia Twoje wybory na początku i pozwala automatowi uzupełnić resztę miejsc, replace pokazuje wyłącznie Twoje wybory.

Reguła znaczy “gdy produkt jest w kategorii A, polecaj produkty z kategorii B”. Reguły są globalne, ustawiane na stronie ustawień, maksymalnie sześć, i wchodzą na karcie produktu przez ten sam filtr pair/recommendations, prowadząc automatyczne propozycje.

Poza blokami darmowej wtyczki (karta produktu i koszyk) Pair Pro renderuje rekomendacje na stronie podziękowania za zamówienie (woocommerce_thankyou, priorytet 20) i pod formularzem zamówienia (woocommerce_after_checkout_form, priorytet 20). Oba miejsca korzystają z rekomendera darmowej wtyczki i tego samego markupu .pair-recommendations z atrybutem data-pair-context, więc style motywu i analityka działają bez zmian.

Pair Pro rejestruje blok renderowany po stronie serwera, Pair Recommendations (pair-pro/recommendations), do edytora bloków i szablonów FSE. Atrybuty: heading (domyślnie “You may also like”), strategy (related, tags, bestsellers albo newest, domyślnie related) i count (domyślnie 4). Blok obsługuje szerokie i pełne wyrównanie, a renderuje się przez rekomender darmowej wtyczki z kontekstem block.

Każdy odwiedzający dostaje stały wariant w ciasteczku pair_pro_ab (30 dni, SameSite=Lax), losowany przy pierwszej wizycie. Wariant A zostaje przy ustawionej strategii karty produktu, wariant B podmienia ją na ab_strategy_b przez filtr pair/recommendations. Skrypt analityki dokleja wariant do kontekstu miejsca, więc panel pokazuje You may also like (variant A) i (variant B) jako osobne wiersze i możesz je porównać obok siebie.

Skrypt na froncie zgłasza wyświetlenia i kliknięcia do endpointu REST (pair-pro/v1/track). Gdy kliknięty produkt trafi później do koszyka, ciasteczko kliknięcia (pair_pro_clicked) pozwala przypisać to dodanie do rekomendacji. Liczniki są agregowane przy zapisie w jednej tabeli {prefix}pair_pro_stats, per dzień, miejsce i produkt, więc tabela zostaje mała.

WooCommerce > Pair Pro Analytics pokazuje wyświetlenia, kliknięcia i konwersje przypisane do kliknięcia w podziale na miejsca, w wybranym zakresie dat, domyślnie ostatnie 30 dni. Miejsca są raportowane osobno: You may also like (karta produktu), cross-sell w koszyku, często kupowane razem, strona podziękowania, kasa, blok oraz oba warianty testu A/B.

Atrybucja opiera się na kliknięciu i jest przybliżona. Traktuj ją jako sygnał kierunkowy, które miejsce zbiera uwagę, a nie jako księgowanie przychodu.

Na potrzeby bloku Pair Pro pobiera najnowsze zamówienia o statusach zrealizowane i przetwarzane (do limitu scan_orders), wybiera te zawierające oglądany produkt i zlicza, jak często inne produkty występują w tych samych zamówieniach. Pozycje wariantów są przypisywane do produktu nadrzędnego, więc warianty tego samego produktu składają się na jedną rekomendację.

Ranking (do 12 pozycji) jest zapisywany w transiencie pair_pro_fbt_<id> na 12 godzin per produkt. Skan zamówień uruchamia się tylko przy braku cache, więc nowe zamówienia pojawiają się w wynikach po wygaśnięciu transientu. Zamówienia są odczytywane przez API zamówień WooCommerce, zgodne z HPOS.

Blok renderuje się na haku woocommerce_after_single_product_summary z priorytetem 14, czyli tuż nad darmowym blokiem “You may also like” (priorytet 15). Siatka używa pętli produktów WooCommerce i dziedziczy karty produktu aktywnego motywu oraz klasy .pair-recommendations z darmowej wtyczki, z modyfikatorem pair-recommendations--bought-together.

Pokazywane są tylko produkty opublikowane i widoczne w katalogu. Przy włączonym In stock only wyniki są dodatkowo filtrowane do produktów dostępnych. Gdy po filtrach lista jest pusta, blok w ogóle się nie renderuje. Wtyczka dodaje na karcie produktu mały arkusz stylów. Sam blok nie potrzebuje JavaScriptu; przy włączonej analityce dochodzi jeden mały skrypt zgłaszający wyświetlenia i kliknięcia.

Przy włączonym add_all pod siatką pojawia się formularz POST z ukrytą listą ID produktów i tokenem nonce. Po kliknięciu Pair Pro dodaje do koszyka każdy produkt z zestawu, który jest możliwy do kupienia i dostępny, pokazuje standardowy komunikat WooCommerce o dodaniu do koszyka i wraca na poprzednią stronę. Przycisk działa bez JavaScriptu.

Pair Pro zapisuje:

  • pair_pro_settings
  • pair_pro_version
  • pair_pro_activated_at
  • pair_pro_db_version
  • transienty cache pair_pro_fbt_<id>
  • tabelę analityki {prefix}pair_pro_stats
  • meta _pair_manual_recommendations przy produktach wybieranych ręcznie

Usunięcie wtyczki kasuje wszystko: cztery opcje, wszystkie transienty pair_pro_fbt_*, meta _pair_manual_recommendations i tabelę {prefix}pair_pro_stats, po kolei na każdej witrynie w sieci. Freemius sam śledzi zdarzenie odinstalowania i odrzuca wtyczki dostarczające skrypt uninstall.php, więc sprzątanie działa na haku SDK after_uninstall. Jeśli dane mają zostać, zwróć false z filtra pair-pro/uninstall/delete_data we wtyczce mu-plugin, która ładuje się przed sprzątaniem.

Na froncie wtyczka ustawia dwa ciasteczka: pair_pro_ab (30 dni, SameSite=Lax, stały wariant testu A/B, tylko przy włączonych testach) i pair_pro_clicked (30 minut, SameSite=Lax, identyfikatory klikniętych produktów na potrzeby atrybucji, tylko przy włączonej analityce). Oba trzymają identyfikatory produktów albo jedną literę, bez danych osobowych.