Error al modificar functions.php para casilla de aceptación en comentario (RGPD)
-
Hola.
Como todos estos días, estoy adaptando mi web al RGPD y me he encontrado con un problema con los comentarios de los posts. Hay que pedir la aceptación explícita del usuario y no lo consigo.
En primer lugar probé a introducir en el archivo functions.php de my child theme el código que Fernando Tellado (Ayudawp.com) programó para esta función (casilla de aceptación en comentarios nativos de WordPress). Pues bien, al pegar la primera parte del código la web va bien. Mi archivo functions.php queda tal que:
/** 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://ayudawp.com/muylegal/">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_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 marcando la casilla ....'); return false; } } }); </script> <?php } } //sin validación js add_filter( 'preprocess_comment', 'verify_comment_privacy' ); function verify_comment_privacy( $commentdata ) { if ( ! isset( $_POST['privacy'] ) ) wp_die( __( 'Error: Debes aceptar nuestra política de privacidad marcando la casilla ....' ) ); return $commentdata; } //guarda el campo como comment meta add_action( 'comment_post', 'save_comment_privacy' ); function save_comment_privacy( $comment_id ) { add_comment_meta( $comment_id, 'privacy', $_POST[ 'privacy' ] ); }
Pero al añadir el segundo fragmento de código, el que incluye la primera capa de datos que exige la ley, lo que sucede es que esta información de la primera capa se ve en todas las páginas de la web, por encima del header incluso. Digamos que flotan en la parte superior de la web. Mi functions.php queda, con este añadido, así:
<?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://ayudawp.com/muylegal/">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_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 marcando la casilla ....'); return false; } } }); </script> <?php } } //sin validación js add_filter( 'preprocess_comment', 'verify_comment_privacy' ); function verify_comment_privacy( $commentdata ) { if ( ! isset( $_POST['privacy'] ) ) wp_die( __( 'Error: Debes aceptar nuestra política de privacidad marcando la casilla ....' ) ); return $commentdata; } //guarda el campo como comment meta add_action( 'comment_post', 'save_comment_privacy' ); function save_comment_privacy( $comment_id ) { add_comment_meta( $comment_id, 'privacy', $_POST[ 'privacy' ] ); } /** Primera capa privacidad en comentarios **/ $acceptance = '<p class="comment-reply-title comentarios">Información sobre protección de datos</p> <p class="comment-subscription-form"><ul><li>Responsable: Fernando Tellado</li> <li>Fin del tratamiento: Controlar el spam, gestión de comentarios</li> <li>Legitimación: Tu consentimiento</li> <li>Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.</li> <li>Derechos: Acceso, rectificación, portabilidad, olvido.</li> <li>Contacto: <a href="mailto:admin@ayudawordpress.com" title="Contacta">admin@ayudawordpress.com</a>.</li> <li>Información adicional: Más información en <a href="https://ayudawp.com/muylegal" title="Política de Privacidad">nuestra política de privacidad</a>.</li></ul></p>'; function ft_acceptance_comments( $form ) { global $acceptance; return $form . $acceptance; } { global $acceptance; echo $acceptance; } add_action( 'comment_form_field_comment', 'ft_acceptance_comments' );
¿Qué hago mal? Conste que no tengo ni la menor idea de php… Así que cualquier metedura de pata es posible
- El debate ‘Error al modificar functions.php para casilla de aceptación en comentario (RGPD)’ está cerrado a nuevas respuestas.