I commenti WordPress li trovo molto utili, aiutano le persone che leggono l’articolo ed incrementano il traffico sul sito web, l’unico neo, un pò come tutti i form del resto, sono i commenti spam, gli spambot passano senza sosta per lasciare commenti indesiderati sui nostri form; come possiamo proteggere quindi il form commenti di WordPress dallo spam ?
In aiuto ci viene uno dei motori più potenti antispam di casa Google, ReCapcha, vediamo subito come configurarlo.
Come ottenere una Key per Google ReCaptcha
Per prima cosa è necessario accedere al servizio ReCaptcha da qui , inseriamo l’indirizzo del sito su cui vogliamo attivare il modulo antispam e clicchiamo “Salva Modifiche”
Ora apriamo il file functions.php che si trova all’interno della root del nostro template WordPress ed incolliamoci quanto segue :
1 2 3 4 5 6 7 8 9 |
/*Add Google captcha field to Comment form*/ add_filter('comment_form','add_google_captcha'); function add_google_captcha(){ echo '<div class="g-recaptcha" data-sitekey= "---CHIAVE DEL SITO---"></div>'; } /*End of Google captcha*/ |
—CHIAVE DEL SITO— : va sostituita con la vostra chiave che ha generato ReCaptcha e che trovate nel pannello, dove precedentemente avete inserito il dominio.
Adesso nel file single.php che trovate sempre nella root del tema, andiamo ad incollare il seguente codice.
N.B. : può essere che in alcuni casi il file si chiami in maniera diversa, a seconda del tema utilizzato, nel mio caso infatti è comments.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<script src='https://www.google.com/recaptcha/api.js'></script> <script type="text/javascript"> jQuery("#submit").click(function(e){ var data_2; jQuery.ajax({ type: "POST", url: "http://tuodominio.it/wp-content/themes/tuo-tema/google_captcha.php", data: jQuery('#commentform').serialize(), async:false, success: function(data) { if(data.nocaptcha==="true") { data_2=1; } else if(data.spam==="true") { data_2=1; } else { data_2=0; } } }); if(data_2!=0) { e.preventDefault(); if(data_2==1) { alert("Per favore risolvi il modulo anti spam"); } else { alert("Non spammare!"); } } else { jQuery("#commentform").submit } }); </script> |
http://tuodominio.it/wp-content/themes/tuo-tema : questa parte va sostituita con l’indirizzo del vostro sito ed il nome della cartella del tema che state utilizzando.
A questo punto creiamo un nuovo file che si chiama google_captcha.php , copiamolo all’interno della root del nostro tema ed al suo interno ci incolliamo il seguente codice
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $data; header('Content-Type: application/json'); error_reporting(E_ALL ^ E_NOTICE); if(isset($_POST['g-recaptcha-response'])) { $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ $data=array('nocaptcha' => 'true'); echo json_encode($data); exit; } // calling google recaptcha api. $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=CHIAVE-SEGRETA&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); // validating result. if($response.success==false) { $data=array('spam' => 'true'); echo json_encode($data); } else { $data=array('spam' => 'false'); echo json_encode($data); } ?> |
CHIAVE-SEGRETA : va sostituito con la vostra chiave segreta fornita da ReCaptcha.
Ecco il risultato
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
Buongiorno,
ho eseguito la procedura ed inserito la Chiave del Sito, ma mi restituisce un errore:
“ERRORE per il proprietario del sito: chiave del sito non valida”
Ho verificato tutto, il google recaptcha funziona correttamente per il form contatti
Il sito è https://spaziotartaruga.it
Come posso comportarmi?
P.s. ho praticato anch’io Wing Chun;)
Grazie
Carlo
Buongiorno,
se le da quell’errore è proprio quello che dice, la chiave è errata, magari l’ha copiata male.