Inserire checkbox consenso nei commenti

Inserire checkbox consenso nei commenti WordPress. Ecco come fare.

Inserire checkbox consenso nei commenti WordPress è un altro passaggio fondamentali per rispettare i requisiti del nuovo regolamento della privacy sul GDPR. Se ancora non hai adeguato il tuo sito web, corri a farlo subito è molto importante!

Ti lascio la mia prima guida che puoi seguire per adeguarti.

GDPR e WordPress: come mettere a norma il tuo sito web.

In questo articolo invece vedremo come essere compliant quando un utente che inserisce un commento sul tuo blog. Il GDPR impone che ogni qualvolta un utente inserisce un commento, quindi inserisce nelle apposite form dati personali debba anche rilasciare il consenso al trattamento degli stessi. Questo può essere fatto tramite un semplice checkbox da spuntare,al fianco di una scritta tipo ad esempio “acconsento al trattamento dei dati per le finalità indicate nella Privacy Policy”. La check va inserita anche sotto i form dei commenti.

Andiamo a vedere come inserire checkbox consenso nei commenti WordPress.

Inserire checkbox consenso nei commenti WordPress

Come ti ho anticipato tempo fa, nell’articolo riguardante l’aggiornamento alla versione 4.9.6 di WordPress questa implementazione viene effettuata automaticamente. Attento però, ci sono casi come il mio in cui nonostante tu abbia eseguito l’aggiornamento di WordPress non si attiva il check-box nei commenti. I motivo principale è causato dalla versione del tuo tema che non supporta l’inserimento di checkbox consenso nei commenti WordPress. Vediamo  come inserire checkbox consenso nei commenti senza plugin ma con un paio di righe di codice.

Aggiornamento GDPR. Ecco il rilascio di WordPress 4.9.6

Come inserire checkbox consenso nei commenti WordPress

Con gli ultimi aggiornamenti di WordPress possiamo modificare il codice del nostro tema all’interno del back-end senza accedere in FTP al nostro server e scaricare il file function.php.

Quindi andiamo in Aspetto -> Editor impostiamo come tema principale il nostro tema child (si, la modifica devi farla nel tema child altrimenti al prossimo aggiornamento perdi tutto). Non hai un tema child vedi questo post è semplicissimo crearlo.

Tema Child WordPress: ecco come crearlo in 1 click.

Ok, selezionato il vostro tema child cliccate sul file functions.php e nel editor aggiungete il codice che vi posto.


/**
* aggiungo il checkbox privacy in coda di campi di default del form dei commenti
*/

add_action( 'comment_form_logged_in_after', 'comment_form_additional_fields' );
add_action( 'comment_form_after_fields', 'comment_form_additional_fields' );
function comment_form_additional_fields() {
$commenter = wp_get_current_commenter();
$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
echo '<p class="privacy-container"><input id="privacy" name="privacy" type="checkbox"' . $aria_req . ' value="si"><small> <a href="inserisci qui il link della privacy">' . __('Ho letto la policy privacy</a> e accetto il trattamento dei miei dati personali') . '</small></p>';
}
//salvo il valore del campo privacy come meta del commento
add_action( 'comment_post', 'save_comment_form_additional_fields' );
function save_comment_form_additional_fields($comment_id) {
if (isset($_POST['privacy']) && $_POST['privacy'] == 'si') {
$privacy = wp_filter_nohtml_kses($_POST['privacy']);
add_comment_meta($comment_id, 'privacy', $privacy);
}
}
//impedisco il salvataggio del commento se non è stato flaggato il checkbox privacy
//questa funzione è un fallback se non è attivo javascript
add_filter( 'preprocess_comment', 'verify_comment_form_data' );
function verify_comment_form_data($commentdata) {
if (!isset($_POST['privacy']) || $_POST['privacy'] != 'si')
wp_die( __( '<strong>Errore</strong>: Per procedere devi accettare la privacy policy. Torna <em>indietro</em> reinvia il tuo commento flaggando la casella di controllo.' ) );
return $commentdata;
}
//impedisco l'invio del form dei commenti se non si flagga la checkbox privacy
add_action('wp_footer','validate_privacy_comment_form_javascript');
function validate_privacy_comment_form_javascript(){
if (is_single() && comments_open()){
?>;
<script type="text/javascript">
jQuery(document).ready(function($){
$(".comment-form #submit").on('click', function(e){
if (!$('#privacy').is(':checked')){
e.preventDefault();
return false;
}
});
});
</script>
<?php
}
}
//aggiugo un metabox al template dei commenti nel backend
add_action( 'add_meta_boxes_comment', 'extend_comment_add_meta_box' );
function extend_comment_add_meta_box() {
add_meta_box( 'comment_meta_box', __( 'Additional fields' ), 'extend_comment_meta_box', 'comment', 'normal', 'high' );
}
//recupero i dati e li mostro nel metabox
function extend_comment_meta_box($comment) {
$privacy = get_comment_meta( $comment->comment_ID, 'privacy', true );
//aggiungo al metabox un campo nascosto con valore random
wp_nonce_field( 'extend_comment_update', 'extend_comment_update', false );
?>
<p>
<?php _e('Agreed with privacy policy') ?>
<input type="checkbox" id="privacy" name="privacy" <?php if ($privacy && $privacy == 'si') echo "checked=\"checked\" value=\"{$privacy}\"" ?>>
</p>
<?php
}
//salvo i dati aggiuntivi del metabox
add_action( 'edit_comment', 'save_extended_comment_data' );
function save_extended_comment_data($comment_id) {
//se non ricevo il campo nascosto di sicurezza non eseguo l'aggiornamento
if(!isset($_POST['extend_comment_update']) || !wp_verify_nonce($_POST['extend_comment_update'], 'extend_comment_update')) return;
if (isset($_POST['privacy']) && $_POST['privacy'] == 'on') {
//$privacy = wp_filter_nohtml_kses($_POST['privacy']);
update_comment_meta( $comment_id, 'privacy', 'si');
} else {
update_comment_meta( $comment_id, 'privacy', 'no');
}
}

Il codice è commentato è spiega cosa effettivamente fanno le funzioni implementate.

Ricorda di sostituire negli apici “inserisci qui il link della privacy” con il link che riporta alla tua pagina della Privacy Policy.

Conclusione

Hai visto Inserire checkbox consenso nei commenti WordPress i due semplici passaggi. Se hai difficoltà scrivimi nei commenti in modo da poterti aiutare.

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

12 Commenti

Pasquale Rispondi

Buongiorno, il problema non è tanto che appaia il tasto di accettazione e il link alla privacy policy, ma che quell’azione venga effettivamente memorizzata poi in un registro elettronico che dimostri la prova del consenso.
A lume di naso so che iubenda mette a disposizione una API Key che va a verificare tali azioni ma è settata per default solo per i form dei contatti, mentre per questi form più piccoli per inviare i commenti, si dovrebbe seguire una procedura più meticolosa. Non so se nel suo codice ha già previsto tale evenienza. Chiedo quindi maggiori lumi a riguardo.
Grazie.

Bartolomeo Rispondi

Ciao Pasquale,
questo snippet di codice non prevede una chiamata RestApi per l’invio del consendo al registro elettronico.
Saluti

Bartolomeo Rispondi

Ciao Luigi, ti ringrazio per la segnalazione.
Buona serata

Luigi Rispondi

Ciao, chiedo scusa ma l’errore è solo quello segnalato alla riga 33. Ho ricontrollato aperture e chiusure delle graffe e sono giuste.

Luigi Rispondi

Ciao,
nel trasferire il codice in un file php aggiuntivo al functions.php ho riscontrato e corretto due errori che ti segnalo:

Riga 33 ” ?glt; ” va sostituito con ” ?> ”
Righe 45 e 46 le due graffe di chiusura che seguono l’apertura del codice php sono di troppo.

Corretti questi refusi, il codice funziona benissimo su Twenty Twentyone. Grazie

Bartolomeo Rispondi

Ciao,
certamente. Postami il pezzo di codice che va in errore.
Attendo tue.

Elisa Rispondi

Buonasera,
sto provando ad utilizzare questa opzione sul mio sito ma nel modificare il file functions.php il salvataggio viene impedito per un errore di sintassi.
L’errore che ricevo è questo

“Le tue modifiche al codice PHP sono state annullate a causa di un errore alla linea 67 del file wp-content/themes/authentic-child/functions.php. Correggi e prova a salvare nuovamente.
syntax error, unexpected ‘?’

Potete aiutarmi?

Giuseppe Rispondi

… cerco di porre la mia perplessità in modo più evidente:
Di certo bisognerà aggiungere il codice riferito all’opzione da aggiungere nella pagina di regstrazione, ma bisognerà anche cambiare tutti i riferimenti che nel suo articolo sono rivolti ai commenti.
Ecco, quali e come modificarli?
Ovviamente se ha tempo e se la mia richiesta è pertinente.
Grazie!

Bartolomeo Rispondi

Ciao Giuseppe, non ho esempi da farti vedere al momento. Prova a dare uno sguardo a questo post che scrissi tempo fa:
https://www.bartolomeoalberico.it/creare-area-riservata-con-wordpress-senza-plugin/
Da qui, ottimo punto di partenza, puoi modificare il codice integrando la parte che desideri.
Ora, non so se stai scrivendo tramite codice l’area login al tuo sito web o utilizzi un plugin.
Se usi un plugin presumo che ti dia già la possibilità di impostare l’accettazione della privacy.

Giuseppe Rispondi

Grazie!
Mi perdoni, ma non capisco quel: “basta aggiungere il codice nel file php che hai creato”.
Può spiegare meglio, per favore, e fare qualche esempio?

Giuseppe Rispondi

Buongiorno ed auguri di Felice 2019.
Ho letto l’articolo ed apprezzo il risultato; Le chiedo:
E’ possibile avere la medesima funzione per la pagina di registrazione?
Grazie!

Bartolomeo Rispondi

Ciao e buon anno anche te!! Sì certo puoi ottenere lo stesso risultato anche nella pagina di registrazione, basta aggiungere il codice nel file php che hai creato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003