Odezwał się do mnie dawny klient, dla którego kiedyś stworzyłem wtyczkę do wtyczki, czyli wtyczkę modyfikującą pewne standardowe zachowania wtyczki Contact Form 7 do WordPressa. Wtyczka nadal działa, więc zadowolony chciał porozmawiać o nowym projekcie, jaki się u niego szykuje. Przy tej okazji pomyślałem, że mogę podzielić się fragmentem tamtego zlecenia, a mianowicie filtrem blokującym możliwość wysyłania formularza z Contact Form 7 z wybranych domen.
Zakazane domeny w formularzach kontaktowych Contact Form 7 (WordPress)
Domyslnie – co zresztą w większości przypadków najpewniej ma sens – w formularzu kontaktowym można wpisać dowolny adres. Czasem jednak jest potrzeba, by taką możliwość ograniczyć, np. w celu eliminacji skrzynek w ogólnodostępnych adresach (domenach), gdy swoją ofertę kierujemy do firm i zależy nam raczej na kontaktach z adresów firmowych, czyli w firmowych domenach. I choć oczywiście może to też generować problemy, bo sporo właścicieli zwłaszcza mniejszych firm nie korzysta z poczty w ramach swojej domeny, to czasem takie ryzyko i tak się opłaca. Po prostu jest wliczone w model pozyskiwania kontaktów (leadów).
W Contact Form 7 nie znajdziemy takiej opcji, ale możemy podpiąć się pod filtr, za pomocą którego taką walidację (weryfikację), czy adres nadawcy nie znajduje się na zakazanej liście domen, możemy dość łatwo przeprowadzić.
Zaczynamy jednak od funkcji, za pomocą której będziemy sprawdzać adresy e-mail:
function webinsider_wp_cf7_blocked_email_domain( $email ) {
$blacklist = array( "wp.pl", "onet.pl", "gazeta.pl" );
$email = strstr( $email, '@' );
$domain = trim( $email, "@" );
if( in_array( $domain, $blacklist ) )
return false; // OK
else
return true; // Blokada
}
Mamy tu tablicę „blacklist”, w której umieszczamy „zakazane domeny”, a funkcja zwraca „true” lub „false”, w zależności od tego, czy adres e-mail (domena) znajduje się na tej liście, czy nie.
Kolejny krok, to odpowiedni filtr w Contact Form 7, za pomocą którego uruchamiamy weryfikację:
function webinsider_wp_cf7_custom_email_validation_filter( $result, $tag ) {
$name = $tag['name'];
if ( $name == 'your-email') {
$email = sanitize_email( $_POST[$name] );
if( ! webinsider_wp_cf7_blocked_email_domain( $email ) ){
$result['valid'] = false;
$result->invalidate( $tag, 'Nie możesz użyć adresu e-mail w tej domenie!' );
};
};
return $result;
}
add_filter('wpcf7_validate_email','webinsider_wp_cf7_custom_email_validation_filter', 10, 2);
add_filter('wpcf7_validate_email*', 'webinsider_wp_cf7_custom_email_validation_filter', 10, 2);
W przypadku gdy adres e-mail wpisany w polu o identyfikatorze „your-email” jest w „zakazanej domenie”, to zostanie zablokowana wysyłka wiadomości z formularza, oraz zostanie wyświetlony odpowiedni komunikat.
Gdy w formularzu pole na e-mail nadawcy ma inną nazwę (inny identyfikator), to trzeba go w powyższym kodzie podmienić.
![(!) Zgłoś błąd na stronie](https://webinsider.pl/wp-content/uploads/2019/12/webinsider_zglos-blad-na-stronie_200x29_888888.png)
![Pomogłem? To może postawisz mi wirtualną kawę?](https://webinsider.pl/wp-content/uploads/2025/12/pomogle-postaw-mi-wirtualna-kawe-202308-6f4e37.png)
- Zakupy w sklepie Bambu Lab bez podatku VAT, czyli rejestracja jako B2B oraz specjalny link do specjalnego sklepu - 1970-01-01
- W Home Assistant 2024.7 w końcu można bezpośrednio z właściwości danego elementu zarządzać jego rozmiarem w cały jeszcze czas eksperymentalnym układzie „sekcje” - 1970-01-01
- Sprzedajesz drona DJI? Usuń go ze swojego konta. Kupujesz używanego drona DJI? Zadbaj, by dotychczasowy właściciel usunął go ze swojego konta! - 1970-01-01