Na WordPress.org wylądowała właśnie SHIFT64 Phone Validation for WooCommerce. Darmowa, open source, i na papierze dość nudna: sprawdza, czy numer telefonu wpisany w checkoucie w ogóle może istnieć, a jeśli chcesz, zapisuje go w jednym, spójnym formacie.
Bez SMS-ów, bez kodów, bez zewnętrznych API. Wszystko liczy się na serwerze sklepu, na regułach z googlowskiego libphonenumber.
Po co komu taka wtyczka?
Jeśli wysyłasz paczki, numer na zamówieniu to nie ozdoba. Dzwoni na niego kurier, pisze na niego bramka SMS, eksportuje go ERP. A klienci wpisują go na wszystkie możliwe sposoby: 600 123 456, +48 600-123-456, 0048 (600) 123 456, albo wklejony z PDF-a z niewidocznymi twardymi spacjami.
WooCommerce sam z siebie przepuści jako telefon 123. Wtyczka czyta numer w kontekście kraju z adresu, więc 600 123 456 przy polskim adresie to +48 600 123 456, a zamówienie nie przejdzie, dopóki numer nie będzie poprawny.
Prosta wtyczka, dwa checkouty
I tu zaczyna się zabawa. Sklep na WooCommerce w 2026 roku może mieć klasyczny checkout (shortcode, formularz, hooki PHP) albo blokowy (Store API, React). To dwa zupełnie inne światy: inaczej wysyłają zamówienie, inaczej pokazują błędy, inaczej trzeba znaleźć pole, które podświetlić.
Większość czasu nie poszła na samą walidację, tylko na detale:
- twarde spacje z wklejonego tekstu, które WooCommerce odrzucał, zanim moja walidacja w ogóle się odpaliła,
- dopasowanie błędu do pola po kodzie, a nie po treści komunikatu (bo tłumaczenie zmieniło tekst i podświetlenie znikało),
- zwinięty adres w blokowym checkoucie: klient widział błąd o polu, którego nie widział,
- numer do wysyłki skopiowany z rozliczeniowego, który nie powinien wywalać tego samego błędu drugi raz.
Żadnej z tych rzeczy nie ma na liście funkcji. Wszystkie wylądowałyby w skrzynce supportu.
Co stoi za kulisami
To jest część, z której jestem najbardziej zadowolony:
- 93 testy PHPUnit na PHP 8.3, 8.4 i 8.5 przy każdym pull requeście,
- 38 testów Playwright na prawdziwym WordPressie z WooCommerce (
wp-env), które składają realne zamówienia w obu checkoutach, - PHPStan na poziomie 6 i PHPCS z regułami WordPress-Extra (w tym reguły bezpieczeństwa),
- oficjalny Plugin Check z WordPress.org na zbudowanej paczce,
- co poniedziałek automatyczny przebieg testów E2E z najnowszym stabilnym WordPressem i WooCommerce. Wtyczki rzadko psują się, kiedy zmienia się ich kod. Psują się, kiedy WooCommerce wypuszcza nową wersję checkoutu i nikt tego nie zauważył.
Wydania są w pełni automatyczne: Conventional Commits, semantic-release, changelog, paczka ZIP i deploy na SVN WordPress.org bez ręcznego podbijania wersji. O tym podejściu pisałem już przy okazji motywów: automatyczne wersjonowanie motywów WordPress.
Dlaczego tak?
Bo tak samo piszę kod dla klientów w SHIFT64 i chciałem mieć coś publicznego, co mogę pokazać zamiast obiecywać. Repozytorium jest otwarte: github.com/mateusz-zadorozny/shift64-phone-validation. Testy, CI, pipeline wydań, checklista do code review, wszystko na wierzchu.
Szczegółowy opis (po angielsku) jest na blogu SHIFT64: WooCommerce Phone Validation Plugin: A Small Job, Engineered Like a Big One.
Mała prośba
Jeśli masz sklep na WooCommerce, wypróbuj wtyczkę. A jeśli się przyda, zostaw opinię na WordPress.org. Nowa wtyczka bez recenzji jest praktycznie niewidoczna. Jak coś nie działa, zgłoś issue na GitHubie: dostanie test, zanim dostanie poprawkę.