WP Desk Care - zadbaj o swój biznes online!

Sprawdzona opieka techniczna dla Twojego sklepu.

Woo MailerLite Groups

# Changelog

All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [2.6.8] – 2026-07-20
### Fixed
– Rozjechany układ na zakładkach „Opcje” i „Narzędzia” — karty były wciśnięte w wąski sidebar (320 px), a główna kolumna zostawała pusta. Obie zakładki używają teraz responsywnego gridu na pełną szerokość
– Przycisk „Zapisz ustawienia” wisiał samotnie na górze pustej kolumny — przeniesiony do paska na dole formularza, widoczny na wszystkich zakładkach z ustawieniami

### Improved
– Panel ustawień zwija się do jednej kolumny poniżej 900 px (laptopy, tablety, telefony)

## [2.6.7] – 2026-07-20
### Added
– Zakładki w ustawieniach (Połączenie i mapowania / Opcje / Narzędzia) — koniec z jedną długą stroną
– Symulator „co się stanie?” — wpisz numer zamówienia i zobacz na sucho, które mapowania zadziałają, czy jest zgoda i do jakich grup trafi klient; nic nie jest wysyłane
– Tryb testowy — wtyczka loguje co by zrobiła, ale nic nie wysyła do MailerLite
– Warunki kategorii w mapowaniach: „zawiera produkt z kategorii” / „NIE zawiera z kategorii”
– Opcjonalna minimalna wartość zamówienia per wiersz mapowania
– Eksport/import konfiguracji (JSON) — klucz API i sekret webhooka nigdy nie są eksportowane
– Przycisk „Nowa grupa” — tworzenie grupy MailerLite bez wychodzenia z panelu
– Checklista startowa (onboarding) widoczna dopóki konfiguracja nie jest kompletna

### Improved
– Kolejka ponowień używa Action Scheduler (wbudowany w WooCommerce) z fallbackiem na WP-Cron — znacznie pewniejsze na sklepach o małym ruchu
– Tooltip kolumny „ML” pokazuje grupy docelowe i czas ostatniej wysyłki
– Spójne polskie znaki diakrytyczne w całym panelu

### Fixed
– Aktywacja mogła kończyć się krytycznym błędem, gdy `is_plugin_active()` było niedostępne (WP-CLI, panele hostingowe) — zastąpione `class_exists`
– Integracja WP Desk mogła powodować fatal przy zmienionej nazwie folderu wtyczki (odczyt wersji względem pliku, nie twardej ścieżki)
– Callbacki publicznych filtrów utwardzone na TypeError powodowane przez inne wtyczki

## [2.6.6] – 2026-06-26
### Added
– Wykluczenia w mapowaniach — warunek „NIE zawiera produktu”: grupa przypisywana, gdy zamówienie nie zawiera wskazanego produktu
– Kolumna „ML” na liście zamówień — ✓ dodany / ✗ błąd / – pominięty (brak zgody); działa na HPOS i klasycznym magazynie zamówień
– Akcja „Wyślij do MailerLite ponownie” w edycji zamówienia + masowa akcja na liście zamówień (przydatna też do migracji starych zamówień)
– Kolejka ponowień — nieudane wysyłki ponawiane przez cron po 5 min → 1 h → 12 h (max 3 próby); licznik kolejki widoczny w statystykach
– Opcjonalne pola dodatkowe do MailerLite: last_product, last_order_total (pola trzeba najpierw utworzyć w MailerLite)
– Opcjonalne usuwanie z grup przy zwrocie/anulowaniu zamówienia
– Zarządzanie zgodą marketingową w „Moje konto” — wycofanie zgody wypisuje klienta z MailerLite (RODO)
– Karta statystyk w ustawieniach: dodani / bez zgody / błędy w bieżącym miesiącu
– Wsparcie WooCommerce Subscriptions — wyzwalacze „Subskrypcja: aktywna” i „Subskrypcja: wygasła/anulowana”
– Checkbox zgody na checkoutcie blokowym (Gutenberg) przez Additional Checkout Fields API (WooCommerce 8.9+)
– Webhook przychodzący z MailerLite — wypis w MailerLite wycofuje zgodę klienta w sklepie (URL z sekretem w ustawieniach)
– Deklaracja zgodności z HPOS (High-Performance Order Storage)

## [2.6.5] – 2026-05-08
### Fixed
– Serwerowe zapytania do API MailerLite bywały odrzucane z HTTP 403 przez CDN/WAF przed API na części hostingów (domyślny user-agent WordPressa był blokowany). Wszystkie wywołania API wysyłają teraz jawny user-agent. To naprawia również przypadki, w których subskrybenci nie byli dodawani do MailerLite przy zmianie statusu zamówienia — z tej samej przyczyny (`wml_subscribe` też działa serwerowo).

### Improved
– Komunikaty błędów API pokazują teraz treść odpowiedzi MailerLite (lub fragment surowej odpowiedzi) zamiast samego kodu HTTP — błędy 403/uprawnień można zdiagnozować z panelu ustawień i z logów

## [2.6.4] – 2026-05-08
### Security
– Klucz API MailerLite nie jest już renderowany w stronie ani używany po stronie przeglądarki. Synchronizacja grup działa w całości po stronie serwera (nowy handler `wml_sync_groups`) — klucz nigdy nie opuszcza serwera. Wcześniej złośliwe rozszerzenie przeglądarki mogło odczytać klucz z DOM. (audyt bezpieczeństwa WP Desk)
– Logowanie przeniesione na logger WooCommerce (`WC_Logger`) — wpisy trafiają do `wp-content/uploads/wc-logs/` z haszowaną, nieodgadywalną nazwą pliku i ochroną dostępu zapewnianą przez WooCommerce, zamiast własnego pliku chronionego tylko przez `.htaccess` (który bywa nieskuteczny na nginx/LiteSpeed i mógł ujawniać adresy e-mail klientów). Podgląd logów w panelu wtyczki oraz w WooCommerce → Status → Logi. (audyt bezpieczeństwa WP Desk)

### Changed
– Pole klucza API nie jest pre-wypełniane — przy zapisanym kluczu pokazuje maskę; puste zapisanie zachowuje istniejący klucz, wpisanie nowego go nadpisuje

## [2.6.3] – 2026-05-08
### Fixed
– Brakujący mechanizm sprawdzania aktualizacji — wtyczka nigdy nie odpytywała serwera licencji, przez co powiadomienia o nowych wersjach nigdy nie pojawiały się w panelu WordPress. Dodano filtr `pre_set_site_transient_update_plugins` z cache’owaniem wyniku co 12h.
– Dodano obsługę popupu “Zobacz szczegóły wersji” w WordPress (filtr `plugins_api`) — wyświetla changelog bezpośrednio w adminie.

## [2.6.2] – 2026-05-06
### Added
– Log viewer wbudowany w panel wtyczki — wyświetla ostatnie 50 zdarzeń z kolorowaniem (OK/ERROR/skipped), przyciski Odśwież, Pobierz plik i Wyczyść logi. Nie wymaga dostępu do serwera.

### Fixed
– Podgląd logów czytał zły plik (`wml-log.txt` zamiast `wml-logs/wml-log.txt`) — sekcja logów była zawsze pusta mimo aktywnego logowania

## [2.6.1] – 2026-05-06
### Fixed
– Two-step MailerLite group assignment: subscriber is first created/updated via `POST /subscribers`, then explicitly assigned to the group via `POST /subscribers/{id}/groups/{group_id}` — guarantees group membership for both new and returning (existing) subscribers

### Improved
– Log entries now include the MailerLite subscriber ID on success, making remote debugging significantly easier
– Settings page now clearly explains that `unconfirmed` status prevents automations from firing until the subscriber confirms their subscription; recommends pairing `active` status with the consent checkbox for immediate automation triggers

### Added
– `readme.txt` for WordPress.org and WP Desk marketplace compliance

## [2.6.0] – 2026-05-06
### Added
– DNS Health Check panel in plugin settings — checks SPF, DMARC, BIMI, CAA, MTA-STS records for the store domain
– Warning displayed in settings when “active” subscription status is used without a consent checkbox

## [2.5.0] – 2026-04-20
### Added
– Marketing consent checkbox option for WooCommerce checkout — customers are added to MailerLite only if they opt in
– Subscription status setting: “unconfirmed” (double opt-in, recommended) or “active” (direct add)
– Editable consent checkbox label in plugin settings

## [2.4.1] – 2026-04-18
### Changed
– Full WordPress Coding Standards (WPCS) compliance: i18n wrappers on all user-facing strings, PHPDoc blocks on all functions, proper code formatting

## [2.4.0] – 2026-04-15
### Added
– Privacy policy content registration via wp_add_privacy_policy_content (GDPR)
– GPL-3.0+ license

### Changed
– Plugin version constant synchronized with plugin header

## [2.3.2] – 2026-04-10
### Fixed
– Log file moved to protected directory (wp-content/wml-logs/) with .htaccess deny — was previously accessible from the web
– MIME type validation added to ZIP file upload in license server admin
– Capability check added at the start of admin page render function

## [2.3.0] – 2026-03-01
### Added
– Automatic license verification via daily WP-Cron job
– Auto-deactivation of plugin features on invalid license
– Auto-update system: client plugin checks license server for newer version and injects into WordPress updater
– HTML email template for license delivery (new purchase and renewal variants)
– ZIP upload system in license server admin panel
– Search and delete functionality in license keys table

Preferencje plików cookies

Inne

Inne niekategoryzowane pliki cookie to te, które są analizowane i nie zostały jeszcze przypisane do żadnej z kategorii.

Niezbędne

Niezbędne
Niezbędne pliki cookie są absolutnie niezbędne do prawidłowego funkcjonowania strony. Te pliki cookie zapewniają działanie podstawowych funkcji i zabezpieczeń witryny. Anonimowo.

Reklamowe

Reklamowe pliki cookie są stosowane, by wyświetlać użytkownikom odpowiednie reklamy i kampanie marketingowe. Te pliki śledzą użytkowników na stronach i zbierają informacje w celu dostarczania dostosowanych reklam.

Analityczne

Analityczne pliki cookie są stosowane, by zrozumieć, w jaki sposób odwiedzający wchodzą w interakcję ze stroną internetową. Te pliki pomagają zbierać informacje o wskaźnikach dot. liczby odwiedzających, współczynniku odrzuceń, źródle ruchu itp.

Funkcjonalne

Funkcjonalne pliki cookie wspierają niektóre funkcje tj. udostępnianie zawartości strony w mediach społecznościowych, zbieranie informacji zwrotnych i inne funkcjonalności podmiotów trzecich.

Wydajnościowe

Wydajnościowe pliki cookie pomagają zrozumieć i analizować kluczowe wskaźniki wydajności strony, co pomaga zapewnić lepsze wrażenia dla użytkowników.