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');
}