Dodaj Honeypot do formularza WordPress w celu skutecznej ochrony przed spamem
Objaśnienie
Dodanie pułapki na spam do formularzy WordPressa to sprytny sposób na wychwycenie spamu bez przeszkadzania użytkownikom. Oto jak to działa:
- Pole pułapki: Do formularza dodawane jest ukryte pole. Prawdziwi użytkownicy go nie zobaczą, ale boty spamowe je wypełnią.
- Walidacja: Jeśli ukryte pole jest wypełnione, prawdopodobnie to bot, a przesłanie formularza zostaje odrzucone.
Dla Contact Form 7 kod dodaje ukryte pole o nazwie wp_dudecom_honeypot
. Jeśli to pole jest wypełnione, formularz jest oznaczany jako spam.
Dla dowolnego niestandardowego formularza WordPressa możesz użyć tej samej strategii z ukrytym polem. Wystarczy dodać ukryty input do formularza i sprawdzić jego wartość po przesłaniu formularza.
Ta metoda jest prosta i nie wymaga od użytkowników rozwiązywania zagadek, takich jak CAPTCHA, co czyni ją przyjazną dla użytkownika, a jednocześnie skuteczną w walce z botami spamowymi.
Kod
<?php
// Add a honeypot field to Contact Form 7
function wp_dudecom_add_honeypot_to_cf7( $tag ) {
if ( $tag['name'] == 'wp_dudecom_honeypot' ) {
$tag['type'] = 'hidden';
$tag['name'] = 'wp_dudecom_honeypot';
$tag['values'] = array( '' );
}
return $tag;
}
add_filter( 'wpcf7_form_tag', 'wp_dudecom_add_honeypot_to_cf7' );
// Validate the honeypot field in Contact Form 7
function wp_dudecom_validate_honeypot_cf7( $result, $tag ) {
if ( $tag->name == 'wp_dudecom_honeypot' && ! empty( $_POST['wp_dudecom_honeypot'] ) ) {
$result->invalidate( $tag, 'Spam detected.' );
}
return $result;
}
add_filter( 'wpcf7_validate_hidden', 'wp_dudecom_validate_honeypot_cf7', 10, 2 );
// Add honeypot field to any WordPress form
function wp_dudecom_add_honeypot_field() {
echo '<input type="hidden" name="wp_dudecom_honeypot" value="" />';
}
// Validate honeypot field in any WordPress form
function wp_dudecom_check_honeypot_field() {
if ( ! empty( $_POST['wp_dudecom_honeypot'] ) ) {
wp_die( 'Spam detected.' );
}
}
add_action( 'init', 'wp_dudecom_check_honeypot_field' );
// Example usage: Add honeypot field to a custom form
function wp_dudecom_custom_form() {
?>
<form method="post" action="">
<?php wp_dudecom_add_honeypot_field(); ?>
<input type="text" name="your_name" placeholder="Your Name" required />
<input type="email" name="your_email" placeholder="Your Email" required />
<textarea name="your_message" placeholder="Your Message" required></textarea>
<input type="submit" value="Send" />
</form>
<?php
}
?>
Instrukcja
Lokalizacja pliku: Dodaj poniższy kod do pliku functions.php
swojego motywu lub do pliku własnej wtyczki.
Wymagania wstępne: Upewnij się, że masz zainstalowaną i aktywowaną wtyczkę Contact Form 7, jeśli chcesz używać tego z Contact Form 7.
Kroki wdrożenia:
- Dostęp do plików WordPress: Użyj klienta FTP lub menedżera plików swojego dostawcy hostingu, aby uzyskać dostęp do plików WordPress.
- Otwórz plik
functions.php
: Przejdź dowp-content/themes/twoj-motyw/functions.php
i otwórz go do edycji. Alternatywnie, stwórz lub otwórz plik własnej wtyczki. - Dodaj kod honeypot: Skopiuj podany fragment kodu i wklej go na końcu pliku
functions.php
lub pliku własnej wtyczki. - Zapisz zmiany: Zapisz plik po dodaniu kodu.
- Wdrożenie w Contact Form 7:
- Edytuj swój formularz Contact Form 7.
- Dodaj nowe ukryte pole o nazwie
wp_dudecom_honeypot
za pomocą edytora formularzy.
- Wdrożenie w formularzach własnych:
- Dołącz funkcję
wp_dudecom_add_honeypot_field()
w swoim HTML formularza, w miejscu, gdzie chcesz, aby pole honeypot się pojawiło. - Upewnij się, że obsługa przesyłania formularza sprawdza pole honeypot za pomocą
wp_dudecom_check_honeypot_field()
.
- Dołącz funkcję
- Testuj swoje formularze: Prześlij swoje formularze, aby upewnić się, że działają poprawnie i że przesyłki spamowe są blokowane.
Potrzebujesz pomocy w wdrożeniu lub bardziej zaawansowanej funkcjonalności? Odwiedź wp-dude.com po fachową pomoc w WordPressie.