Avisos
Vaciar todo

Añadir check box de Acepto privacidad en Formulario de registro

5 Respuestas
2 Usuarios
0 Reacciones
26 Visitas
Respuestas: 2682
Famed Member
Topic starter
 

Hola, para cumplir con la ley de protección de datos, me dicen que debería aparecer un check box de Acepto privacidad en Formulario de registro. Actualmente lo que aparece es un check box de para clicar si deseas recibir una newsletter, pero ninguno que se refiera a aceptar la política de privacidad.

image

Tenemos el plugin gratuito "Coockie Yes"

Versiones: WordPress 6.9.4, con Woocommerce

Gracias por la ayuda

Contenido solo visible a usuarios registrados


 
Respondido : 30/03/2026 7:17 am
Tags del tema
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Alceste.

- Accede a Fragmentos de código -> añadir nuevo

.- Añade un título para tenerlo identificado y añade el siguiente código:

// Añadir checkbox de política de privacidad en el formulario de registro de WooCommerce
add_action( 'woocommerce_register_form', 'we_add_privacy_checkbox_register', 10 );

function we_add_privacy_checkbox_register() {
woocommerce_form_field( 'politica_privacidad_registro', array(
'type' => 'checkbox',
'class' => array('form-row form-row-wide rgpd'),
'label_class' => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
'input_class' => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
'required' => true,
'label' => 'He leído y acepto la <a href="https://www.cortinaestor.es/politica-de-privacidad/" target="_blank">política de privacidad</a>',
));
}

// Validar que el checkbox esté marcado
add_action( 'woocommerce_register_post', 'we_validate_privacy_checkbox', 10, 3 );

function we_validate_privacy_checkbox( $username, $email, $validation_errors ) {
if ( ! isset( $_POST['politica_privacidad_registro'] ) || empty( $_POST['politica_privacidad_registro'] ) ) {
$validation_errors->add( 'privacy_error', 'Debes aceptar la política de privacidad para registrarte.' );
}
return $validation_errors;
}

// Guardar el consentimiento como meta del usuario
add_action( 'woocommerce_created_customer', 'we_save_privacy_consent' );

function we_save_privacy_consent( $customer_id ) {
if ( isset( $_POST['politica_privacidad_registro'] ) ) {
update_user_meta( $customer_id, 'acepta_politica_privacidad', 'sí' );
// Opcional: guardar la fecha del consentimiento
update_user_meta( $customer_id, 'fecha_aceptacion_privacidad', current_time( 'mysql' ) );
}
}

 

Revisa si se muestra y nos comentas.

 

Un saludo


 
Respondido : 30/03/2026 9:06 am
Respuestas: 2682
Famed Member
Topic starter
 

Gracias Pepe, funciona como necesitamos!

Saludos


 
Respondido : 30/03/2026 9:56 am
Respuestas: 2682
Famed Member
Topic starter
 

Hola, 

Ahora veo que cuando llegan al carrito sin haberse registrado previamente no les muestra este check box de la privacidad. ¿Cómo podemos hacer que se muestre también aquí? Gracias

 

image

 
Respondido : 30/03/2026 10:05 am
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Alceste.

Para finalizar compra puedes añadir lo siguiente:

// Añadir checkbox de política de privacidad en el Checkout de WooCommerce
add_action( 'woocommerce_review_order_before_submit', 'we_add_privacy_checkbox_checkout', 9 );

function we_add_privacy_checkbox_checkout() {
woocommerce_form_field( 'politica_privacidad_checkout', array(
'type' => 'checkbox',
'class' => array('form-row form-row-wide rgpd'),
'label_class' => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
'input_class' => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
'required' => true,
'label' => 'He leído y acepto la <a href="https://www.cortinaestor.es/politica-de-privacidad/" target="_blank">política de privacidad</a>',
));
}

// Validar que el checkbox esté marcado
add_action( 'woocommerce_checkout_process', 'we_validate_privacy_checkbox_checkout' );

function we_validate_privacy_checkbox_checkout() {
if ( ! isset( $_POST['politica_privacidad_checkout'] ) || empty( $_POST['politica_privacidad_checkout'] ) ) {
wc_add_notice( 'Debes aceptar la política de privacidad para completar el pedido.', 'error' );
}
}

// Guardar el consentimiento en el pedido (muy recomendado)
add_action( 'woocommerce_checkout_update_order_meta', 'we_save_privacy_consent_checkout' );

function we_save_privacy_consent_checkout( $order_id ) {
if ( isset( $_POST['politica_privacidad_checkout'] ) && ! empty( $_POST['politica_privacidad_checkout'] ) ) {
update_post_meta( $order_id, 'acepta_politica_privacidad', 'sí' );
update_post_meta( $order_id, 'fecha_aceptacion_privacidad', current_time( 'mysql' ) );
}
}

 

Lo mismo que el anterior, nuevo fragmento de código y lo añades.

 

Un saludo


 
Respondido : 30/03/2026 11:35 am