Añadir casilla de aceptación de la política de privacidad en los comentarios

    Permite añadir un checkbox para recabar el consentimiento del tratamiento de los datos y así cumplir con una parte del RGPD. Si el usuario no acepta le muestra un error explicándole el motivo, y si acepta se guarda en la base de datos como prueba. No olvides modificar el enlace a la política de privacidad.

    <?php
    /** Aceptación después del formulario de comentarios **/
    add_filter( 'comment_form_field_comment', 'mi_campo_de_privacidad_en_comentarios' );
    function mi_campo_de_privacidad_en_comentarios( $comment_field ) {
        return $comment_field.'<p class="pprivacy"><input type="checkbox" name="privacy" value="privacy-key" class="privacyBox" aria-req="true">  Acepto la <a target="blank" href="https://dominio.com/privacidad/">política de privacidad</a><p>';
    }
    //validación por javascript
    add_action('wp_footer','validate_privacy_comment_javascript');
    function validate_privacy_comment_javascript(){
     if (! is_admin() && is_single() && comments_open() ){
            wp_enqueue_script('jquery');
            ?>
            <script type="text/javascript">
            jQuery(document).ready(function($){
                $("#submit").click(function(e)){
                    if (!$('.privacyBox').prop('checked')){
                        e.preventDefault();
                        alert('Debes aceptar nuestra política de privacidad <p><a href="javascript:history.back()">' . __('« Volver') . '</a></p>');
                        return false;
                    }
                }
            });
            </script>
            <?php
    }
    }
    
    //sin validación js
    add_filter( 'preprocess_comment', 'verify_comment_privacy' );
    function verify_comment_privacy( $commentdata ) {
    if ( ! isset( $_POST['privacy'] ) && ! is_admin() )
    wp_die( __( 'Error: Debes confirmar que estás de acuerdo con nuestra política de privacidad<p><a href="javascript:history.back()">' . __('« Volver') . '</a></p>' ) );
    
        return $commentdata;
    }
    
    //guarda el campo como comment meta
    function save_comment_meta_data ( $post_id ) {
    $privacy_comment = $_POST['privacy'];
    if ( $privacy_comment ) {
    add_comment_meta( $post_id, 'privacy', $privacy_comment, true );
    }}
     
    add_action( 'comment_post', 'save_comment_meta_data', 1 );
    
    // Mostramos el valor del metadato en la página de administración de comentarios
    if ( is_admin() ) {
    function show_commeta() {
       echo get_comment_text().'<br><br><strong>'.get_comment_meta(get_comment_ID(), 'privacy',1).'<strong>';
       }
    add_action('comment_text', 'show_commeta');
    }