Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/swider8814/woocommerce-nip/archive/refs/heads/master.zipLekka wtyczka WordPress/WooCommerce dodająca opcjonalne pole NIP do danych rozliczeniowych klienta i klasycznego checkoutu WooCommerce.
Zakres
Wtyczka obsługuje wyłącznie polski NIP w danych rozliczeniowych WooCommerce i klasycznym checkoutcie. Nie integruje się z GUS/REGON, nie pobiera danych firmy automatycznie i nie dodaje konfiguracji w panelu administracyjnym.
Funkcje
- Dodaje pole
billing_nipw danych rozliczeniowych. - Pole NIP jest opcjonalne.
- Jeśli NIP jest wpisany, wymagana jest też nazwa firmy.
- Waliduje polski NIP: dokładnie 10 cyfr, poprawna suma kontrolna i brak wartości placeholderowych typu
1111111111. - Dodaje NIP do edycji adresu rozliczeniowego w panelu klienta.
- Podpowiada zapisany NIP w checkoutcie dla zalogowanego klienta.
- Zapisuje NIP w profilu klienta po checkoutcie.
- Zapisuje NIP w meta zamówienia jako
_billing_nip. - Pokazuje NIP w szczegółach zamówienia w panelu WooCommerce.
- Pokazuje NIP w adresie rozliczeniowym zamówienia, np. na
order-received, w szczegółach zamówienia w koncie klienta i w mailach WooCommerce. - Pokazuje NIP w podglądzie adresu rozliczeniowego w koncie klienta.
- Deklaruje zgodność z WooCommerce HPOS.
- Ładuje minimalny JavaScript tylko na stronie checkout.
Wymagania
- WordPress
- WooCommerce
- Klasyczny checkout WooCommerce
- PHP 8.0 lub nowszy
Pliki
woocommerce-nip.php- cały kod wtyczki: rejestracja hooków, pola rozliczeniowe, walidacja, zapis meta, wyświetlanie w adresach, adminie i mailach.README.md- dokumentacja projektu.LICENSE- licencja GPL-2.0-or-later..gitignore- lokalne ignorowane pliki.
Instalacja
- Skopiuj katalog
woocommerce-nipdowp-content/plugins/. - Włącz wtyczkę
WooCommerce NIP Fieldw panelu WordPress. - Upewnij się, że sklep używa klasycznego checkoutu WooCommerce.
- Przetestuj checkout z pustym NIP, poprawnym NIP i błędnym NIP.
Zachowanie checkoutu
Pole NIP jest dodawane do sekcji rozliczeniowej po polu billing_company. Jeśli pole firmy nie istnieje, NIP jest dodawany na końcu pól rozliczeniowych.
Puste pole NIP nie blokuje zamówienia. Jeśli klient wpisze NIP:
- wartość musi zawierać dokładnie 10 cyfr,
- numer musi mieć poprawną sumę kontrolną,
- pole
billing_companymusi być uzupełnione.
Błędy walidacji są przypisane do pól billing_nip i billing_company, aby WooCommerce mógł wskazać klientowi właściwe miejsce formularza.
Dla zalogowanego klienta checkout podpowiada NIP zapisany wcześniej w billing_nip. Skrypt checkoutu ogranicza NIP do cyfr i 10 znaków oraz przywraca zapisane wartości pól rozliczeniowych, jeśli zewnętrzny skrypt motywu wyczyści je po załadowaniu strony.
Konto klienta
Pole NIP jest dodawane do edycji adresu rozliczeniowego w „Moje konto”. Przy zapisie adresu używana jest ta sama walidacja NIP i firmy co w checkoutcie.
Zapisany NIP jest widoczny w podglądzie adresu rozliczeniowego w koncie klienta.
Dane zamówienia
Po poprawnym złożeniu zamówienia NIP jest zapisywany w meta zamówienia:
_billing_nip
Wartość jest widoczna:
- w szczegółach zamówienia w panelu WooCommerce,
- w adresie rozliczeniowym zamówienia na stronie
order-received, - w adresie rozliczeniowym zamówienia w koncie klienta,
- w adresie rozliczeniowym w mailach WooCommerce.
Hooki i funkcje
Wtyczka rejestruje się po plugins_loaded, ale kończy działanie, jeśli klasa WooCommerce nie jest dostępna.
Główne punkty integracji:
woocommerce_checkout_fields- dodanie pola NIP.woocommerce_checkout_get_value- wczytanie zapisanego NIP do checkoutu.woocommerce_billing_fields- dodanie pola NIP do formularza adresu rozliczeniowego klienta.woocommerce_my_account_my_address_formatted_address- pokazanie NIP w podglądzie adresu rozliczeniowego klienta.woocommerce_order_formatted_billing_address- pokazanie NIP w adresie rozliczeniowym zamówienia.woocommerce_order_get_formatted_billing_address- awaryjne dopisanie NIP do finalnego adresu rozliczeniowego.woocommerce_after_checkout_validation- walidacja NIP i firmy.woocommerce_after_save_address_validation- walidacja NIP przy zapisie adresu rozliczeniowego w koncie.woocommerce_checkout_create_order- zapis_billing_nip.woocommerce_checkout_update_user_meta- zapisbilling_nipw profilu klienta po checkoutcie.woocommerce_admin_order_data_after_billing_address- wyświetlanie NIP w adminie.wp_enqueue_scripts- inline JS tylko na checkoutcie.before_woocommerce_init- deklaracja zgodności z HPOS.
Najważniejsze funkcje:
woocommerce_nip_add_checkout_field()- buduje i wstawia polebilling_nip.woocommerce_nip_get_checkout_field_value()- podpowiada zapisany NIP w checkoutcie.woocommerce_nip_add_billing_address_field()- dodaje NIP do formularza adresu rozliczeniowego.woocommerce_nip_add_my_account_address_nip()- pokazuje NIP w podglądzie adresu rozliczeniowego klienta.woocommerce_nip_add_order_billing_address_nip()- pokazuje NIP w adresie rozliczeniowym zamówienia.woocommerce_nip_add_formatted_order_billing_address_nip()- dopisuje NIP do finalnego adresu, jeśli nie trafił tam wcześniej.woocommerce_nip_validate_checkout_field()- waliduje relację NIP/firma.woocommerce_nip_get_validation_errors()- współdzieli reguły walidacji dla checkoutu i konta klienta.woocommerce_nip_validate_billing_address_field()- waliduje NIP przy zapisie adresu rozliczeniowego.woocommerce_nip_is_valid()- sprawdza format i sumę kontrolną polskiego NIP.woocommerce_nip_save_order_meta()- zapisuje poprawny NIP w meta zamówienia.woocommerce_nip_save_customer_billing_nip()- zapisuje poprawny NIP w profilu klienta.woocommerce_nip_enqueue_checkout_script()- ogranicza wpisywanie NIP do cyfr i 10 znaków oraz chroni wypełnione pola checkoutu przed wyczyszczeniem przez frontend.
Testowanie ręczne
Minimalna lista kontroli przed wydaniem:
- Włącz WooCommerce i klasyczny checkout.
- Złóż zamówienie bez NIP - zamówienie powinno przejść.
- Złóż zamówienie z poprawnym NIP i nazwą firmy - NIP powinien zapisać się w zamówieniu.
- Złóż zamówienie z poprawnym NIP bez nazwy firmy - checkout powinien pokazać błąd firmy.
- Złóż zamówienie z błędnym NIP - checkout powinien pokazać błąd NIP.
- Sprawdź, czy NIP jest widoczny w panelu zamówienia.
- Sprawdź, czy NIP jest widoczny na stronie
order-received. - Sprawdź, czy NIP jest widoczny w szczegółach zamówienia w koncie klienta.
- Sprawdź, czy NIP jest widoczny w adresie rozliczeniowym maila WooCommerce, a nie jako osobne pole meta.
- Zapisz NIP w adresie rozliczeniowym konta i sprawdź, czy podpowiada się w checkoutcie.
- Sprawdź checkout z włączonym HPOS.
Przykładowy poprawny NIP testowy:
8567346215
Sprawdzenie składni
Przed commitem uruchom:
php -l woocommerce-nip.php
Wydanie
- Zaktualizuj nagłówek
Versionwwoocommerce-nip.php, jeśli zmienia się wersja. - Uruchom
php -l woocommerce-nip.php. - Przejdź checklistę testów ręcznych.
- Zacommituj zmianę.
- Wypchnij branch do GitHuba.
- Opcjonalnie dodaj tag wersji.
Zasady zmian
- Utrzymuj wtyczkę bez zależności zewnętrznych, chyba że jest to konieczne.
- Nie dodawaj integracji GUS/REGON bez osobnej decyzji projektowej.
- Zachowuj zgodność z klasycznym checkoutem WooCommerce.
- Przy zmianach walidacji testuj puste pole, błędny NIP i poprawny NIP.
- Przy zmianach danych zamówienia zachowaj meta key
_billing_nip, jeśli nie ma zaplanowanej migracji.
Licencja
GPL-2.0-or-later