Własna walidacja pól Contact Form 7

Własna walidacja pól w Contact Form 7 - Webist Blog

Spis treści

Własna walidacja pól w Contact Form 7 umożliwia dostosowanie sprawdzania wypełnianych danych do konkretnych potrzeb projektu, a tym samym zwiększa precyzję. Pozwala więc zweryfikować format numeru telefonu, kod pocztowy, długość tekstu czy zależności między polami, co z kolei ogranicza liczbę błędów. Automatyczne odrzucanie błędnych wpisów usprawnia zatem obsługę formularzy, redukuje ręczną weryfikację i jednocześnie poprawia jakość zbieranych informacji. Przejrzyste komunikaty dodatkowo zwiększają zaufanie użytkowników, a elastyczność mechanizmu ułatwia integrację z innymi wtyczkami. Wdrożenie własnych reguł to szybki sposób na znaczące zwiększenie profesjonalizmu formularzy i optymalizację procesów.

W czym może to pomóc?

Własna walidacja w Contact Form 7 umożliwia definiowanie dowolnych reguł sprawdzania danych, co podnosi jakość informacji i oszczędza czas. Automatyczne odrzucanie nieprawidłowych wpisów zmniejsza liczbę błędów, przyspiesza obsługę formularzy i wspiera zgodność z wymogami prawnymi. Dzięki czytelnym komunikatom użytkownik natychmiast poprawi dane, co poprawia UX.

Przykłady zastosowań:

  • numer telefonu w określonym formacie,
  • kod pocztowy według wzorca,
  • minimalna/maksymalna długość tekstu,
  • zależności między polami,
  • weryfikacja typu i rozmiaru pliku.

To proste rozwiązanie podnosi profesjonalizm formularzy i ułatwia zarządzanie danymi.

Testowy kod PHP z omówieniem

				
					<?php
// rejestrujemy filtr walidacji dla wszystkich pól tekstowych
// priorytet 20, aby nasza walidacja wykonała się po domyślnych sprawdzeniach
// funkcja ma dwa argumenty: obiekt wyniku walidacji ($result) oraz obiekt pola ($tag)
add_filter('wpcf7_validate_text*', 'custom_cf7_validate_pesel', 20, 2);

function custom_cf7_validate_pesel($result, $tag){
    // nazwa pola (atrybut name w HTML)
    $name = $tag -> name;

    // pobieramy wartość przesłaną w formularzu
    // jeśli pole jest puste lub nie istnieje, ustawiamy pusty łańcuch
    $pesel = isset($_POST[$name]) ? trim( $_POST[$name]) : '';

    // sprawdzamy tylko pole o nazwie "pesel"
    if('pesel' === $name){
        // ciąg musi zawierać dokładnie 11 cyfr
        if(!preg_match('/^[0-9]{11}$/', $pesel)){
            // komunikat błędu, blokujący wysłanie formularza
            $result -> invalidate($tag, "Nieprawidłowy numer PESEL.");
        }
    }

    // zwracamy obiekt z wynikiem walidacji
    return $result;
}
				
			

Ten kod rejestruje filtr CF7 dla pól tekstowych o nazwie pesel, pobiera wartość z $_POST, usuwa spacje i sprawdza wyrażeniem regularnym, czy numer składa się z dokładnie 11 cyfr. W razie niezgodności wyświetla komunikat błędu i blokuje wysłanie formularza. Używa metody invalidate() do zgłaszania błędu. Można go rozszerzyć o weryfikację cyfry kontrolnej PESEL.

Przykłady praktycznego użycia

Przykłady praktycznego użycia własnej walidacji w Contact Form 7 pokazują, jak konsekwentnie i spójnie implementować specyficzne reguły sprawdzania danych. Pozwala to od razu ograniczać błędy, a zarazem również usprawniać późniejsze procesy przetwarzania danych. Dzięki takim rozszerzeniom można systematycznie eliminować niepoprawne wartości jeszcze przed zapisem, co redukuje potrzebę ręcznej korekty. Przyspiesza to obsługę zgłoszeń oraz ponadto zwiększa wiarygodność zgromadzonych rekordów. Poniżej przedstawiono – w sposób stopniowy i logicznie powiązany – dwa często spotykane scenariusze: walidację numeru NIP oraz kodu pocztowego. Każdy przykład zawiera komentarze objaśniające kolejne etapy, co ułatwia dalsze modyfikacje i integracje.

Walidacja numeru NIP

				
					<?php
// rejestrujemy filtr dla pól tekstowych (zarówno text, jak i text*), aby móc
// najpierw wykorzystać domyślne mechanizmy CF7, a następnie dzięki priorytetowi 20
// dołożyć naszą regułę w sposób uporządkowany i przewidywalny.
add_filter('wpcf7_validate_text*', 'custom_cf7_validate_nip', 20, 2);

function custom_cf7_validate_nip($result, $tag){
    // pobieramy nazwę aktualnie walidowanego pola
    $name = $tag -> name;

    // pobieramy wartość i usuwamy wszystkie znaki nienumeryczne
    $nip = isset($_POST[$name]) ? preg_replace('/\D+/', '', trim($_POST[ $name ])) : '';

    // sprawdzamy, czy pole to 'nip'
    if('nip' === $name){
        // Sprawdzamy podstawowy format: dokładnie 10 cyfr, co stanowi bazę dalszych kontroli.
        if(!preg_match('/^[0-9]{10}$/', $nip)){
            // jeśli numer NIP nie przeszedł walidacji to wysyłam komuniakt błędu
            $result -> invalidate($tag, 'Nieprawidłowy numer NIP.');
        }

        // można dodać weryfikację sumy kontrolnej
        $digits = array_map('intval', str_split($nip));
        $weights = [6,5,7,2,3,4,5,6,7];
        $sum = 0;
        
		foreach($weights as $i => $w){
            $sum += $digits[$i] * $w;
        }
        
		$control = $sum % 11;
        
		if($control !== $digits[9]){
            $result -> invalidate($tag, 'NIP nie przeszedł weryfikacji kontrolnej.');
        }
    }

    // zwracamy ostateczny wynik
    return $result;
}
				
			

Ten przykład, poprzez stopniowe oczyszczanie, formatowanie oraz opcjonalną kontrolę sumy. Zapewnia to spójność numeru NIP, natychmiast sygnalizuje błędy i – w rezultacie – ułatwia dalsze przetwarzanie danych, raportowanie oraz integracje systemowe.

Walidacja kodu pocztowego

				
					<?php
// analogicznie rejestrujemy filtr po domyślnych regułach
add_filter('wpcf7_validate_text*', 'custom_cf7_validate_postcode', 20, 2);

function custom_cf7_validate_postcode($result, $tag){
    // pobieramy nazwę bieżącego pola
    $name = $tag -> name;

    // pobieramy wartość i usuwamy zbędne spacje, aby uniknąć błędów
    $postcode = isset($_POST[ $name ]) ? str_replace(' ', '', trim($_POST[ $name ])) : '';
	
    if($name === 'postcode'){
        // sprawdzamy standardowy polski format: dwie cyfry, myślnik, trzy cyfry (XX-XXX)
        if(!preg_match('/^[0-9]{2}-[0-9]{3}$/', $postcode)){
            // komunikat w przypadku nieprawdiłowego kodu pocztowego
            $result -> invalidate($tag, 'Nieprawidłowy kod pocztowy.');
        }
    }

    // zwracamy wynik
    return $result;
}
				
			

Ten kod, wykorzystując czytelne etapy oraz jasne warunki, usuwa zbędne spacje oraz weryfikuje format. Dzięki precyzyjnemu komunikatowi – pomaga użytkownikowi szybko skorygować dane, wzmacniając jakość oraz użyteczność zapisanych adresów.

Opinie
Kliknij, aby ocenić wpis!
[Łącznie: 0 Średnia: 0]

Kategorie:

Data aktualizacji wpisu:

Udostępnij:

Przeczytaj także

Aktualizacja 0.9.0 wtyczki Webist WP Esti CRM - Webist blog

Aktualizacja wtyczki Webist WP Esti CRM do wersji 0.9.0 przynosi szereg usprawnień, które poprawiają stabilność…

Ukryte pola i przekazywanie danych w Contact Form 7 - Webist Blog

Ukryte pola i przekazywanie danych w Contact Form 7 to prosty sposób, aby każdy formularz…

Aktualizacja 0.2 wtyczki Webist WP Asari CRM OSM

Nowa aktualizacja Webist WP Asari CRM OSM w wersji 0.2.0 koncentruje się na stabilności i…