Il form dei commenti sui siti WordPress, in conformità con la nuova normativa europea sulla privacy (GDPR), dovrebbe contenere un checkbox per consentire, agli utenti che inseriscono i propri dati, l’accettazione dell’informativa sulla privacy.

Il codice che andremo ad implementare nel file functions.php è il seguente:

tratto dal sito di Simone Alati (mi è stato utilissimo per risolvere rapidamente il problema su diversi siti).

/**
 * 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()){
        ?glt;
        <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');
    }
}

Sperando che questo articolo di possa essere utile per farti essere in conformità con il GDPR, ti auguro buon lavoro 😉