AnyTry – AI Virtual Try-On for WooCommerce

Opis

AnyTry to oparty na AI system wirtualnej przymierzalni, który pozwala Twoim klientom zobaczyć, jak będą wyglądać w Twoich produktach, zanim je kupią. Wtyczka integruje się bezpośrednio ze stronami produktów WooCommerce, dodając przycisk „Try On” wykorzystujący najnowocześniejszą generatywną AI.

Usługi zewnętrzne

Ta wtyczka łączy się z API AnyTry (https://api.anytry.ai), aby generować obrazy wirtualnych przymiarek przy użyciu generatywnej AI. Korzystanie z wtyczki wymaga konta AnyTry (bezpłatny okres próbny można uruchomić z ekranu ustawień wtyczki).

Do czego wtyczka wykorzystuje API AnyTry:

  • Generowanie przymiarki — przesłanie zdjęcia klienta wraz ze zdjęciem produktu, śledzenie postępu zadania (strumień w czasie rzeczywistym, z odpytywaniem jako rozwiązaniem zapasowym), anulowanie zadania, gdy klient zamknie okno w trakcie generowania, aby zwolnić zarezerwowane zasoby, oraz pobranie gotowego obrazu. Obrazy wynikowe są pobierane wyłącznie przez HTTPS z api.anytry.ai lub subdomeny *.anytry.ai.
  • Doradca rozmiarów AI — rekomendacja rozmiaru, pobierana wyłącznie wtedy, gdy sprzedawca włączy tę funkcję, a klient wypełni quiz.
  • Konto i administracja (wyłącznie praca operatora; nigdy po stronie klienta) — utworzenie konta próbnego przy pierwszej aktywacji (tylko adres e-mail administratora, nazwa użytkownika WordPressa i domena sklepu), wysłanie e-maila z linkiem aktywacyjnym, odzyskanie istniejącego klucza API, jednokrotne logowanie do Portalu AnyTry, weryfikacja skonfigurowanego klucza oraz pobranie danych wyświetlanych na ekranie ustawień wtyczki.
  • Analityka i atrybucja konwersji — zdarzenia lejka (wyświetlenia przycisku, zakończone generowania, dodania do koszyka, rozpoczęcia zamówienia, zakupy, zwroty), zdarzenie porzucenia, gdy klient zamknie okno w trakcie generowania, oraz atrybucja zamówień. Wymaga zgody na analitykę, która na nowych instalacjach jest domyślnie WYŁĄCZONA.

Funkcja przymiarki działa niezależnie od tego, czy analityka jest włączona. Analitykę włączysz w WooCommerce AnyTry AI „Send analytics & conversion events”.

Co jest wysyłane do API AnyTry:

  • Zdjęcie klienta przesłane przez okno przymiarki (wysyłane wyłącznie wtedy, gdy klient sam kliknie „Try On”).
  • Adres URL zdjęcia produktu i identyfikator produktu z WooCommerce.
  • Losowy identyfikator sesji (bez danych umożliwiających identyfikację osoby).
  • Identyfikator zamówienia WooCommerce i identyfikatory produktów w chwili realizacji zamówienia — wyłącznie po wyrażeniu zgody na analitykę.
  • Opcjonalnie: wzrost, waga i zwykle noszony rozmiar, które klient poda w quizie Doradcy rozmiarów AI.

Kiedy dane są wysyłane:

  • Generowanie przymiarki: w chwili przesłania zdjęcia przez klienta i kliknięcia „Try On” na stronie produktu.
  • Doradca rozmiarów: w chwili wypełnienia przez klienta quizu Doradcy rozmiarów AI.
  • Zdarzenia konwersji: w chwili złożenia zamówienia zawierającego przymierzony produkt — wyłącznie po wyrażeniu zgody na analitykę.

Ciasteczka (ustawiane przez serwer, trwałe):

  • anytry_session ciasteczko (90 dni) — przechowuje losowy identyfikator sesji oraz listę identyfikatorów produktów, które odwiedzający przymierzył, i służy do przypisywania zamówień do sesji przymiarek na potrzeby pulpitu konwersji. Ustawiane wyłącznie po wyrażeniu zgody na analitykę.
  • anytry_tried ciasteczko (90 dni) — przechowuje zapasową listę identyfikatorów przymierzonych produktów na wypadek, gdy anytry_session jest niedostępne (blokady ciasteczek firm trzecich, procesy zamówienia oparte na REST). Ustawiane wyłącznie po wyrażeniu zgody na analitykę.
  • anytry_legal_accepted_v2 ciasteczko (1 rok) — zapamiętuje, że klient zaakceptował ekran zgody prawnej i potwierdzenia wieku przed przymiarką, aby nie pytać go o to na każdej stronie. Ustawiane WYŁĄCZNIE po kliknięciu przez klienta „Akceptuję” na ekranie zgody. Nie służy do analityki ani atrybucji.

Trwały magazyn przeglądarki (localStorage):

  • anytry_lang — the language chosen in the widget, used to restore that choice on later visits.
  • anytry_legal_accepted_v2 — kopia powyższego ciasteczka zgody, to samo przeznaczenie i ten sam moment zapisu. Nie służy do analityki ani atrybucji.
  • anytry_tried — kliencka kopia wartości ciasteczka anytry_tried, używana, gdy ciasteczka firm trzecich są blokowane. Zapisywane wyłącznie po wyrażeniu zgody na analitykę.
  • anytry_tried_products — to samo przeznaczenie co anytry_tried, ale zapisane jako uporządkowana mapa per produkt; wykorzystywane przez zakładkę Konwersje w panelu do przypisywania zamówień do sesji przymiarek. Zapisywane wyłącznie po wyrażeniu zgody na analitykę.
  • anytry_canonical_session_id — losowy identyfikator sess_* utrzymywany między przeładowaniami, dzięki któremu API może połączyć zdarzenie wygenerowania przymiarki z późniejszym zdarzeniem zakupu na potrzeby atrybucji konwersji. Zapisywany trwale wyłącznie po wyrażeniu zgody na analitykę. Gdy zgody nie ma, ulotny identyfikator pozostaje w pamięci tylko na czas bieżącej strony i nigdy nie trafia do localStorage.
  • anytry_active_jobs — krótkotrwały rejestr trwających przymiarek (identyfikatory zadań i status), dzięki któremu pływający widget „jeszcze pracuję…” wznawia działanie po przeładowaniu strony. Czyszczony po zakończeniu zadania lub po 24 godzinach. Nie jest wykorzystywany do analityki ani atrybucji.

Ulotny magazyn karty (sessionStorage):

These stores are scoped to the current browser tab. They support the Try-On interface and, when analytics consent is enabled, retry failed analytics events. A photo stored here powers the local before/after toggle; when the widget restores an earlier try-on (for example after a page reload), that stored photo can also be sent with a Size Advisor request the customer initiates. Quiz answers may likewise be reused in such a request. The plugin’s other uploaded-photo cache is described under IndexedDB below.

  • anytry_before_<jobId> — zdjęcie przesłane przez klienta, zachowane po to, aby przełącznik „przed / po” działał po wygenerowaniu wyniku.
  • anytry_result_<jobId> oraz anytry_result_image — data URL wygenerowanego obrazu wynikowego, dzięki czemu ten sam wynik renderuje się natychmiast, gdy klient ponownie otworzy okno w tej samej karcie.
  • _anytry_result_cache_order — job identifiers in cache order, used to evict older result images when the per-tab image cache reaches its limit.
  • anytry_feedback_state — informacja o tym, czy klient ocenił już bieżący wynik 👍 / 👎.
  • anytry_quiz_user_height, anytry_quiz_user_weight, anytry_quiz_usual_size, anytry_quiz_skipped — odpowiedzi z quizu Doradcy rozmiarów, zachowane po to, aby klient nie musiał wpisywać ich ponownie przy porównywaniu kilku przymiarek.
  • anytry_size_recommendation, anytry_size_<photoHash> and anytry_size_<photoHash>_p<productId> — cached Size Advisor responses, which may include estimated body measurements and recommended sizes, used to restore the recommendation for the photo and product.
  • anytry_tab_id — a random identifier used to keep track of which browser tab owns an active try-on job after a reload.
  • anytry_pending_submit — a pending request’s random idempotency key and timestamp. After a reload, a record less than two minutes old can be sent to WordPress to cancel a submission whose response was lost; the record is then discarded.
  • anytry_sw_blocks_sse — wewnętrzny licznik, którym wtyczka wykrywa Service Workera blokującego aktualizacje w czasie rzeczywistym, aby przy kolejnej przymiarce przejrzyście przełączyć się na proxy SSE w tej samej domenie.
  • anytry_pending_events_v1 — up to 20 failed critical analytics events, including their product, job and session identifiers. With current analytics consent, the plugin retries them at the AnyTry API on a later page view in the same tab. A refusal received by the widget or disabled analytics clears this queue and prevents new retries on that page.

Trwały magazyn przeglądarki (IndexedDB):

These databases cache images in the visitor’s browser. Cached uploaded photos can be reused and sent to AnyTry when the customer requests another Size Advisor analysis. Generated results are cached for local display. Clearing the site’s browser data removes these caches.

  • anytry_cache magazyn obiektów photos — ostatnio przesłane zdjęcie, dzięki czemu ponowne otwarcie okna przywraca poprzedni wybór zdjęcia bez konieczności wskazywania go od nowa.
  • anytry_results magazyn obiektów images — data URL wygenerowanych obrazów wynikowych, kluczowane identyfikatorem zadania, dzięki czemu ponowne otwarcie niedawnej przymiarki renderuje się natychmiast.

Zgoda na analitykę:

Wtyczka domyślnie NIE wysyła zdarzeń analitycznych ani atrybucji konwersji. Włączysz je w WooCommerce AnyTry AI „Send analytics & conversion events”. Samo generowanie przymiarek działa niezależnie od tego ustawienia — zależy od niego wyłącznie pulpit atrybucji konwersji w Portalu AnyTry.

When analytics is enabled and a tracking token is available, the widget checks the current merchant setting and the site’s anytry_allow_session_cookie consent filter through WordPress once per page view, before sending or retrying browser analytics. It reuses that result for the rest of the page. CMP integrations must implement that filter; the plugin does not automatically detect every consent manager. An explicit refusal or disabled analytics clears the browser’s attribution cookies, attribution storage and pending-event queue. A failed or unrecognized consent check clears the pending-event queue and stops browser analytics for that page, while preserving existing attribution and session identity. Try-On and Size Advisor remain available. This does not recall requests already transmitted or erase historical order records.

Opcjonalne Google Fonts (domyślnie wyłączone):

Domyślnie wtyczka używa systemowej typografii bezszeryfowej i NIE wykonuje żadnego zapytania o czcionki firm trzecich — API AnyTry jest jedyną usługą zewnętrzną, z którą się łączy. Wewnętrzna opcja anytry_load_google_font (domyślnie wyłączona, bez elementu sterującego dla użytkownika) po włączeniu pobierałaby czcionkę Outfit z Google Fonts (https://fonts.googleapis.com) w sklepie i na stronie ustawień AnyTry; w standardowej instalacji pozostaje wyłączona.

  • Usługa: Google Fonts (https://fonts.google.com)
  • Wysyłane dane: adres IP i User-Agent odwiedzającego (standardowe żądanie HTTP) w chwili renderowania strony z włączoną tą opcją
  • Regulamin: https://policies.google.com/terms
  • Polityka prywatności: https://policies.google.com/privacy

Przesłane zdjęcia są automatycznie usuwane z serwerów AnyTry w ciągu 5 minut od przetworzenia i nie są wykorzystywane do trenowania modeli AI.

Usługa świadczona jest przez AnyTry. Korzystając z wtyczki, klienci akceptują Regulamin i Politykę prywatności AnyTry:

  • Regulamin: https://anytry.pl/terms
  • Polityka prywatności: https://anytry.pl/privacy

Najważniejsze funkcje:

  • Fotorealistyczna przymiarka — wykorzystuje generatywną AI do tworzenia realistycznych obrazów klientów w Twoich produktach.
  • Prywatność danych — zdjęcia klientów są automatycznie usuwane po przetworzeniu. Żadne dane biometryczne nie są przechowywane. Dane śledzenia przymiarek zapisane przy zamówieniach (identyfikator sesji, lista przymierzonych produktów, identyfikatory zadań atrybucji) są objęte wbudowanymi narzędziami WooCommerce do eksportu i usuwania danych osobowych, więc żądania klientów dotyczące ich danych obejmują również te informacje.
  • Wysoka wydajność — strumieniowanie SSE w czasie rzeczywistym z odpytywaniem jako rozwiązaniem zapasowym; nie obciąża Twojego hostingu.
  • Responsywność — działa bez zarzutu na urządzeniach mobilnych i na komputerach.
  • Obsługa wariantów — działa z produktami prostymi i wariantowymi (kolor/rozmiar).
  • Doradca rozmiarów AI — rekomendacje rozmiaru na podstawie krótkiego quizu (wzrost i waga wraz z analizą sylwetki ze zdjęcia albo jedno pytanie „jaki rozmiar nosisz?”).
  • Eye Advisor — dla okularów korekcyjnych i przeciwsłonecznych AnyTry sprawdza, czy szerokość oprawki pasuje do twarzy ze zdjęcia, i pokazuje werdykt dopasowania przy wyniku przymiarki. Działa automatycznie, bez konfiguracji.
  • Działa w wielu kategoriach — odzież, biżuteria, zegarki, okulary, buty i akcesoria.
  • Wielojęzyczność — widget dla klienta dostarcza 10 języków (EN, PL, DE, UK, IT, ES, FR, SV, DA, NB); ustawienia administratora są po angielsku, a tłumaczenia dostarczane są przez paczki językowe WordPress.org.
  • Zgodność z HPOS — pełne wsparcie dla WooCommerce High-Performance Order Storage.
  • WooCommerce Blocks — zgodność z nowym zamówieniem opartym na blokach.
  • Nawigacja między przymiarkami — porównuj wyniki wielu przymiarek, przesuwając palcem.

Jak to działa:

  1. Klient klika „Try On” na stronie produktu.
  2. Klient przesyła swoje zdjęcie.
  3. AI generuje fotorealistyczny obraz klienta w wybranym produkcie.
  4. Opcjonalnie: Doradca rozmiarów AI podpowiada najlepszy rozmiar.

Model SaaS: Ta wtyczka łączy się z API AnyTry w celu przetwarzania AI. Wymagany jest klucz API (dostępny bezpłatny okres próbny). Zobacz Regulamin oraz Politykę prywatności.

Konfiguracja

  1. Przejdź do WooCommerce > AnyTry AI w panelu administracyjnym.
  2. Wprowadź klucz API lub uruchom bezpłatny okres próbny.
  3. Dostosuj wygląd przycisku (kolor, tekst, położenie).
  4. Włącz Doradcę rozmiarów AI (opcjonalnie).
  5. Upewnij się, że Twoje produkty mają ustawione zdjęcia główne (najlepiej sprawdzają się packshoty na płasko lub na niewidzialnym manekinie).

Wymagania

  • WordPress 6.4 lub nowszy.
  • WooCommerce 8.2 or newer.
  • PHP 7.4+ (zalecane: 8.1+).
  • Aktywne połączenie z internetem (do komunikacji z API).

Kod źródłowy i budowanie

Wtyczka dostarcza pełne, niezminifikowane źródła — src/js/anytry.js, src/css/anytry.css i src/css/anytry-admin.css — obok zminifikowanych plików wykonawczych w assets/. Dwa niewielkie skrypty panelu administracyjnego mają swoje niezminifikowane źródła w assets/, obok plików zminifikowanych. Minifikacja odbywa się przy użyciu esbuild na Node.js 18+ przez skrypt budujący minify_wp.js.

Kod firm trzecich: assets/js/heic2any.min.js to gotowa paczka heic2any 0.0.4 (MIT), która zawiera w sobie gifshot (MIT) oraz libheif (LGPL-3.0-or-later). Pełna atrybucja, teksty licencji i oferta udostępnienia kodu źródłowego znajdują się w pliku THIRD-PARTY-NOTICES.txt w katalogu wtyczki. Służy do konwersji zdjęć iPhone’a z HEIC na JPEG w przeglądarce, ładuje się wyłącznie wtedy, gdy klient wybierze plik HEIC, i można ją wyłączyć przełącznikiem „iPhone HEIC support” w WooCommerce AnyTry AI.

Zrzuty ekranu

Instalacja

  1. Pobierz plik ZIP wtyczki.
  2. W panelu WordPressa przejdź do Wtyczki > Dodaj nową > Wyślij wtyczkę na serwer.
  3. Wybierz plik i kliknij Zainstaluj.
  4. Aktywuj wtyczkę.
  5. Przejdź do WooCommerce > AnyTry AI, aby skonfigurować klucz API.

Najczęściej zadawane pytania

Czy zdjęcia klientów są bezpieczne?

Tak. Zdjęcia są przesyłane szyfrowanym połączeniem, przetwarzane przez AI i automatycznie usuwane z serwera w ciągu 5 minut. Nie są wykorzystywane do trenowania modeli AI.

Ile trwa przymiarka?

Większość przymiarek kończy się w 15–20 sekund. Wtyczka nie nakłada ubrania na zdjęcie — generuje całkowicie nowy obraz przy użyciu generatywnej AI, co jest naprawdę kosztownym obliczeniowo procesem. Widget pokazuje na bieżąco szacowany postęp, a klient może zminimalizować okno i przeglądać sklep dalej; gotowy wynik zostanie odebrany, gdy tylko będzie gotowy.

Jakie zdjęcia powinni przesyłać klienci?

Najlepsze efekty dają zdjęcia całej sylwetki, przy dobrym oświetleniu i na jednolitym tle.

Czy wtyczka przechowuje jakieś dane lokalnie?

The plugin stores its WooCommerce configuration options (API key, button style, size advisor mode, etc.) and a small amount of WooCommerce order metadata for conversion attribution. No customer photos are ever stored on your site, and no analytics or reporting data is kept there — all AI processing and analytics are handled by the AnyTry cloud service.

Two small database tables are used for bookkeeping only. One prevents the same cancellation being reported twice. The other is a short-lived outbox: when an order is completed, the conversion event is written there first and sent to AnyTry in the background, so a temporary network or server problem retries instead of losing the order. Delivered entries are removed within 30 days of being delivered. Entries that could not be delivered (for example while no API key is configured) are kept visible to the store owner for up to 90 days and then deleted. Two kinds are removed sooner, once they are more than 14 days old (counted from when the entry was queued, not from when any setting changed): queued purchase entries are removed while analytics consent is switched off, and a deferred refund entry is removed when its order can still be read and shows no AnyTry activity at all — so no purchase was, or ever will be, owed for it. Every other deferred refund entry — including one whose order can no longer be read — stays until it is delivered or reaches the 90-day limit. Nothing waits in this table longer than 90 days. Both tables are removed when you uninstall the plugin. The plugin registers its own eraser with WordPress’s personal-data erasure tool, so an erasure request removes everything AnyTry stored about a shopper’s orders — rows in both tables and all order metadata — regardless of WooCommerce’s „remove order data” setting. One non-personal marker (a timestamp) is retained per erased order so the erased analytics cannot be silently re-created and re-sent.

Czy wtyczka ustawia ciasteczka śledzące?

Tylko wtedy, gdy sprzedawca włączy zgodę na analitykę (domyślnie WYŁĄCZONA). Po włączeniu ciasteczka anytry_session i anytry_tried utrzymują się w przeglądarce odwiedzającego przez 90 dni — oba przechowują losowy identyfikator sesji oraz listę identyfikatorów produktów, które odwiedzający przymierzył, i służą do przypisania zakupów do sesji przymiarek. Pełne informacje znajdziesz w sekcji „External services”.

Czy wtyczka jest zgodna z HPOS?

Tak. Wtyczka jest w pełni zgodna z WooCommerce High-Performance Order Storage (HPOS).

Recenzje

Wtyczka nie ma jeszcze żadnej recenzji.

Kontrybutorzy i deweloperzy

„AnyTry – AI Virtual Try-On for WooCommerce” jest oprogramowaniem open source. Poniższe osoby miały wkład w rozwój wtyczki.

Zaangażowani

Wtyczka „AnyTry – AI Virtual Try-On for WooCommerce” została przetłumaczona na 1 język. Podziękuj tłumaczom za ich wkład.

Przetłumacz wtyczkę “AnyTry – AI Virtual Try-On for WooCommerce” na swój język.

Interesuje cię rozwój wtyczki?

Przeglądaj kod, sprawdź repozytorium SVN lub czytaj dziennik rozwoju przez RSS.

Rejestr zmian

1.0.34

  • Fix: the try-on works again on a page served from a full-page cache for longer than a day. The widget now refreshes its security token instead of failing silently.
  • Fix (reporting): a refund or cancellation names the same try-on the purchase named, for each product.
  • Fix (reporting): a shopper keeps her own try-on on the products she tried, even when another shopper tried the same product.
  • Fix (reporting): attribution collected at a classic checkout is saved with the order instead of being lost when the checkout form carries no try-on field.
  • Change (reporting): an order recognised on the thank-you page now records which step recognised it and keeps the shopper’s try-on session.
  • Change: WooCommerce 8.2 is now the minimum supported version.
  • Note for shop owners: a shop on the classic checkout may see more recorded purchases after this update, because orders that were previously dropped are now recorded. The try-on-backed share may also rise, because purchases that were previously credited to shop-wide recovery are now credited to the shopper who made them. Events already recorded are not changed.

1.0.33

  • Fix (reporting): each purchased line is attributed to the try-on of that product, on every checkout path.
  • Change (reporting): a purchased product with no recorded try-on now names none instead of another product’s.
  • Note for shop owners: per-product conversion and the try-on-backed order share may rise after this update, because more lines now match. Recorded events are not changed.

1.0.32

  • Fix (reporting): an add-to-cart is attributed to the try-on of that product.
  • Fix: the try-on session cookie is measured the way the browser counts it.
  • Fix: accented letters in saved try-on file names are converted rather than replaced.

1.0.31

  • Fix (reporting): matched lines of the same product produce one purchase event carrying their combined value.
  • Fix (reporting): cancelled orders send the product size using the same rule as purchases and refunds.
  • Change (analytics): the widget checks current analytics consent once per page before sending events.
  • Fix (privacy): with analytics disabled or consent refused, attribution cookies and stored attribution are cleared.

1.0.30

  • Fix (reporting): when a customer returned an item, the report did not record WHICH SIZE came back — so „do try-ons reduce returns” could be answered for the shop, but never for a size. Returns now carry the returned line’s size, exactly as purchases already did. When one order returns two sizes of the same product at once, the size is left empty rather than guessed, because naming one would misreport the other.

1.0.29

  • Fix (privacy): size recommendations were sent to AnyTry without the visitor’s session identifier, so the body measurements stored against them could not be found when that shopper later asked for their data to be deleted. The identifier is now sent, exactly as it already was for try-ons. Measurements recorded before this update remain unreachable by session and can only be removed by deleting the plugin data or asking AnyTry support.
  • New: „Also remove these settings” in Security and Limits, off by default. Previously, deleting the plugin also deleted your API key and your Size Advisor choice, so reinstalling it left the Size Advisor silently switched off. Your settings now survive a reinstall unless you tick this box. Customer data — try-on history, session identifiers, queued events and cached images — is still removed when the plugin is deleted, whatever this box says.

1.0.28

  • Fix (billing): if the page was reloaded at the exact moment a try-on was being sent, the try-on was still created and charged on the AnyTry side, but the browser was left with no way to reach it — no result, and no way to cancel it either. The plugin now remembers the pending send and, on the next page load, asks AnyTry to cancel that try-on. A try-on that has already started generating cannot be cancelled and stays charged, because the work has genuinely been done.
  • Internal (analytics contract): checkout and conversion events now use the API’s canonical source field, identify the plugin release where raw diagnostics need it, and no longer send redundant domain/send-time fields or unused lists of all products and jobs tried during the session.
  • Fix (analytics): the number of size measurements reported to AnyTry counted every time a size recommendation was drawn on screen, including when it was redrawn from cache — for example when switching back and forth between saved try-ons. It now counts only genuine new measurements. Expect the „measured sizes” figure in the AnyTry portal to fall after this update: the earlier number was overstated, the new one is the real one.
  • Fix: when a photo was rejected because of its file type, the message said it was „too large or in the wrong format” and advised trying a smaller photo — unhelpful when the file was tiny and the format was the only problem. Size and format now get their own messages.
  • Internal (diagnostics): the ways a photo can be rejected before upload now report a stable machine-readable code to AnyTry instead of a truncated translated sentence, so those faults can be counted the same way regardless of shop language. Other error paths are unchanged.
  • Compatibility: verified on WordPress 7.1.

1.0.27

  • Fix: the daily try-on limit shown in the settings screen said 30 while the plugin actually allowed 50. The screen now shows the limit that is really applied; nothing about the limit itself changed.
  • Change: the analytics figures were removed from the plugin’s settings screen. They were fetched from AnyTry on every visit to that screen and never shown, so the page now loads without that request. Your statistics live in the AnyTry portal.
  • Internal: events sent to AnyTry now carry the plugin version and the time the event actually happened (order date, refund date), instead of only the time they were received. This makes reporting accurate when an event is delivered later than it occurred.

1.0.26

  • Fix (statistics honesty): a completed order was marked „reported” the moment the plugin handed the purchase over to be sent, not when the AnyTry service confirmed it had arrived. If that send then failed — a server hiccup, a timeout, a missing API key — the purchase was lost permanently: the order was already marked as done, so it was never tried again. Purchases are now queued and retried until they are genuinely delivered, and the order is only marked once every item has arrived.
  • Fix (statistics honesty): a refund could be reported for an order whose purchase never arrived, which is what produced returns with no matching sale in your statistics. A refund now waits for its purchase and is sent afterwards, rather than being sent regardless or dropped.
  • Fix: if the purchase reached the plugin only after the order had already changed status — which is normal with bank and BLIK-style payment confirmations — the sale could go unreported entirely. It is now recorded at that point too.
  • Fix (privacy): the checkout form’s hidden tracking field was only filled in when analytics were enabled, but the code receiving it did not check. Withdrawing consent between opening and submitting the checkout could still attach try-on data to the order. Both sides now check.
  • New: administrators are warned in wp-admin if purchase events stop reaching the server, instead of it happening silently. Site owners with command-line access can inspect and retry the queue with wp anytry outbox status and wp anytry outbox redrive.

1.0.25

  • Fix (statistics honesty): when a purchase could not be linked to the buyer’s own try-on session, the plugin used to ask the AnyTry service which shopper last tried the product and attached that shopper’s session to the sale. On shops where many customers try the same products, this credited sales to the wrong person’s session and inflated the conversion numbers your dashboard shows. Recovered matches are now recorded without any visitor identity and are labelled as server-side recoveries, so your dashboard can tell hard attribution apart from best-effort matching.
  • Improvement: the buyer’s own try-on session is now saved with the order at checkout. Payment confirmations that arrive server-to-server (for example BLIK, Przelewy24 or other bank callbacks) used to lose that link about one purchase in five; those sales were still counted, but not connected to the try-on that led to them.
  • Improvement: every purchase event now states how it was attributed (buyer’s own browser data, checkout form, or server-side recovery), matching what the PrestaShop plugin has always reported.
  • Fix (statistics honesty): refunds and cancellations are recorded against the order they belong to, and no longer against whoever happened to be signed in when the status changed. Previously, processing a refund from the shop admin could attach that browser’s try-on session to the record; on a few orders it did. Those records now carry the order’s own attribution or none at all.
  • Fix (size question): the plugin now asks WooCommerce which sizes a product is actually sold in, instead of reading the size selector out of your theme’s page. Reading the page failed in two common situations: on category and shop pages, where WooCommerce prints no size selector at all, and in any shop whose size attribute is not literally called „Rozmiar” or „Size” – a German „Grosse” or French „Taille” was invisible to it. In both cases the customer was shown your shop’s entire size range instead of the sizes that product comes in. Since the size the customer picks is what the recommendation is built on, offering a size the product is not sold in produced a confident but wrong suggestion.
  • Fix (size question): on shops whose size attribute has an unusual name, the size advisor did not appear at all on product pages – no message, no error, it was simply absent. It now appears wherever the product genuinely has more than one size. Products that really do come in one size are still not asked about, as before.
  • Fix (size question): starting a try-on from a „related products” or quick-view tile no longer offers the sizes of the product whose page you happen to be on. It offers the sizes of the product you actually clicked.
  • Improvement (size recommendation): the size table sent to the advisor is now matched to the product’s own sizes rather than to your shop-wide setting. If your shop is set to letter sizes while a product is sold in numbers (or the other way round), the advisor is no longer asked to answer in a vocabulary your catalogue does not use, and it can no longer recommend a size that product is not available in.

1.0.24

  • Fix: the numeric size table stopped at 44. Anything above that could not be entered and was never sent to the size advisor, so it could not suggest those sizes. The table now runs 32 to 62, which covers petite and plus-size ranges. It scrolls sideways rather than stretching the settings page, and sizes you leave blank are simply not sent.
  • Fix: size rows you left blank are no longer sent. Previously a table you had opened but not filled in was passed along as a row of zeros, which the advisor treated as real measurements.
  • Fix: if you use the optional Cloudflare address list, a typo in one entry no longer quietly disables the origin check that entry was meant to configure. Shops that never set that list up are unaffected. A rejected entry is now written to the error log, so a mistake is visible instead of silent.
  • Fix (Safari, iPhone and iPad): your photo is now kept correctly while the try-on window is open. On Safari it was never stored at all, which is why re-opening the size question or coming back to a finished try-on could ask you for the photo again. Every browser on iPhone and iPad uses Safari’s engine, so this affected all of them.
  • Fix (Safari, iPhone and iPad): tapping Save now saves the picture even when the share sheet does not open in time. Before, that case tried to open a new tab, which the phone usually blocks – so the tap appeared to do nothing.
  • Housekeeping: removed about 150 lines of error-handling code that nothing in the plugin has ever called, so the download is smaller. No behaviour changes.

1.0.22

  • Nowość: jeden przełącznik, który wstrzymuje przymierzalnię w całym sklepie bez kasowania Klucza API i bez utraty jakichkolwiek innych ustawień. Włącz ją z powrotem, gdy będziesz gotowy.
  • Nowość: tryb testowy — przymierzalnia staje się widoczna tylko dla wskazanych przez Ciebie użytkowników sklepu, dzięki czemu możesz ją przetestować z własnym zespołem, zanim udostępnisz ją klientom. Wszyscy pozostali widzą sklep dokładnie tak, jak wyglądał przed instalacją wtyczki.
  • Uwaga: gdy tryb testowy jest włączony, śledzenie konwersji nic nie zapisuje, ponieważ zwykli klienci w ogóle nie docierają do przymierzalni. Wyłącz tryb testowy, zanim zaczniesz mierzyć sprzedaż.
  • Uwaga: wstrzymanie przymierzalni sprawia, że wtyczka przestaje cokolwiek ładować na stronach sklepu, ale nie zatrzymuje śledzenia konwersji. Sprzedaż produktów, które klient przymierzył przed wstrzymaniem, nadal jest zapisywana, więc zachowujesz dane, za które już zapłaciłeś.

1.0.21

  • Niezawodność: okno przymiarki nie może już znaleźć się w sprzecznym stanie zminimalizowane-a-zarazem-otwarte. Ponowne pokazanie okna czyściło wewnętrzną flagę, ale zostawiało na elemencie znacznik minimalizacji, więc o tym, który stan wygra, decydowała wyłącznie kolejność arkuszy stylów — ich przestawienie ukryłoby jednocześnie okno i pływający dymek postępu, nie zostawiając drogi powrotu poza przyciskiem przymiarki.
  • Niezawodność: widok zadań w tle nie rozmontowuje już okna (ukrywając wynik, obszar przesyłania i pływający dymek), zanim sprawdzi, czy ma cokolwiek do pokazania, co mogło zostawić puste białe okno.
  • Niezawodność: przełączenie z jednego produktu na drugi zawsze pokazuje teraz opcje rozmiaru właściwego produktu — albo żadnych, gdy Doradca rozmiarów jest wyłączony — zamiast przez chwilę przenosić wybory rozmiaru z poprzedniego produktu.
  • Niezawodność: przełączenie się na inny produkt w trakcie pobierania wyniku nie pokazuje już wyniku niewłaściwego produktu ani nie zawiesza wciąż trwającej przymiarki.
  • Niezawodność: otwarcie tego samego sklepu w dwóch kartach przeglądarki nie pozwala już jednej karcie anulować ani porzucić trwającej — i już opłaconej — przymiarki z drugiej karty.
  • Niezawodność: gotowa przymiarka jest teraz poprawnie odbierana po tym, jak karta przeglądarki w telefonie zostanie na chwilę zamrożona w tle i ponownie otwarta, zamiast sprawiać wrażenie zablokowanej.
  • Niezawodność: przycisk Zapisz oraz przywracanie zapisanej przymiarki nie zawieszają się już w przeglądarkach, w których lokalny magazyn obrazów otwiera się wolno lub jest zablokowany — widget przechodzi wtedy na pobranie wyniku, zamiast czekać w nieskończoność.
  • Niezawodność: spóźniona podpowiedź rozmiaru nie pojawia się już na wierzchu ekranu błędu.
  • Niezawodność: gotowa przymiarka pokazana na liście porównawczej staje się teraz sama z siebie klikalna, zamiast pozostawać na „ładowanie wyniku…”.
  • Niezawodność: chwilowa usterka sieci lub CDN przy pobieraniu gotowej przymiarki nie pokazuje już martwego błędu. Widget ponawia teraz kilka razy próbę pobrania tego samego, już wygenerowanego wyniku, zanim się podda — nigdy nie uruchamia przymiarki ponownie ani nie nalicza jej powtórnie. Zamyka to najczęstszy przypadek „wygenerowane, ale niepokazane”.
  • Diagnostyka: czytelniejsze kategorie błędów (problem z połączeniem jest teraz tak właśnie oznaczany, a nieobsługiwany obraz jako problem z obrazem, zamiast ogólnego „nieznany”), a zdarzenia błędów zawierają teraz identyfikator przymiarki, dzięki czemu sklep widzi dokładnie, których żądań dotyczył problem z wyświetleniem.

1.0.20

  • Utrzymanie: tłumaczenia działają teraz zgodnie ze standardowym modelem WordPress.org — wtyczka dostarcza angielskie teksty źródłowe, a tłumaczenia trafiają do niej jako społecznościowe paczki językowe z translate.wordpress.org, zamiast katalogów dołączanych do wtyczki. Bez zmian w funkcjach i zachowaniu.
  • Zgodność: zweryfikowano na WordPressie 7.0.2 z PHP od 7.4 do 8.5.

1.0.19

  • Bezpieczeństwo: żądania przymiarki i rozmiaru wymagają teraz istniejącego, opublikowanego produktu z włączoną przymiarką i nie przyjmują już zdjęcia produktu podanego przez wywołującego, co uniemożliwia korzystanie z płatnego procesu przymiarki poza przewidzianym przepływem.
  • Bezpieczeństwo: anonimowe żądanie nie może już zmienić ogólnosklepowego ustawienia proxy strumieniowania, a nieprawidłowo sformułowane tokeny zadań są odrzucane, zamiast być po cichu ignorowane.
  • Prywatność: przy wyłączonej analityce sklep nie zapisuje już żadnego ciasteczka śledzącego, danych w pamięci lokalnej ani zdarzenia warstwy danych.
  • Prywatność: Doradca rozmiarów pozostaje w pełni wyłączony zarówno w sklepie, jak i po stronie serwera, gdy wyłączysz go w ustawieniach.
  • Prywatność: usuwanie danych zamówienia w trybie RODO niezawodnie kasuje teraz wszystkie dane AnyTry zapisane przy zamówieniu.
  • Prywatność: analityka anulowań i zwrotów obejmuje teraz wyłącznie produkty, które klient faktycznie przymierzył.
  • Niezawodność: mini widget wznawiania na stronie poprawnie ładuje swój arkusz stylów, przy zamknięciu anuluje wyłącznie własne zadanie i czyści zapamiętane zdjęcie oraz wynik tego zadania.
  • Panel: przykład administratora danych podpowiada teraz nazwę Twojego sklepu.
  • Utrzymanie: odświeżono dołączone tłumaczenia i dodano noty licencyjne firm trzecich; ujednolicono baner wersji głównej paczki.
  • Zgodność: usunięto globalne nadpisania PHP ini_set() (max_execution_time / default_socket_timeout), które mogły wypchnąć serwer poza jego skonfigurowane limity — limit czasu jest teraz ustawiany na samym żądaniu HTTP, a strumień statusu na żywo przywraca swoje ustawienia wyjścia przy zamknięciu.

1.0.18

  • Niezawodność: przesyłanie zdjęć HEIC/HEIF nie wywołuje już ostrzeżenia PHP podczas wykrywania typu obrazu przy żądaniu przymiarki (wartość informacji o obrazie jest teraz zawsze inicjalizowana).
  • Utrzymanie: wewnętrzne utwardzenie analizy statycznej (PHPStan poziom 5, bez uwag) i drobne porządki w typach — bez zmiany zachowania.

1.0.17

  • Niezawodność: finalizacja wyniku jest teraz idempotentna, więc bardzo wolne pobieranie wyniku nie może już wyrenderować go dwukrotnie ani podwójnie policzyć zakończenia.
  • Prywatność: zmiana zdjęcia na nowe natychmiast czyści z przeglądarki zapamiętane obrazy wyniku poprzedniej przymiarki (wcześniej czyszczone dopiero przy zamykaniu okna przymiarki).
  • Poprawność: automatyczne wykrywanie okularów na kartach sklepu i szybkiego podglądu nie odczytuje już opisu sąsiedniego produktu.
  • Utwardzenie: usuwanie znaków końca linii z kategorii produktu przed wysłaniem jej do API; objęcie limitu zapytań śledzenia konwersji tą samą weryfikacją źródłowego adresu IP Cloudflare, co reszta wtyczki.

Starsze wpisy (1.0.0 – 1.0.16) pozostają w repozytorium źródłowym wtyczki oraz w historii wydań na wordpress.org.