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.
Tenemos el plugin gratuito "Coockie Yes"
Versiones: WordPress 6.9.4, con Woocommerce
Gracias por la ayuda
Contenido solo visible a usuarios registrados
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
Gracias Pepe, funciona como necesitamos!
Saludos
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