Para añadir RGPD al checkout de WooCommerce con dos casillas de verificación (checkbox) obligatorias, puedes usar los hooks de WooCommerce para añadir estos campos y validar su presencia antes de que se complete la compra.
A continuación, te muestro cómo hacerlo paso a paso:
1. Agregar los campos al formulario de checkout
Primero, debes agregar los campos al formulario de checkout usando el hook woocommerce_after_order_notes
.
function add_privacy_policy_and_refund_policy_checkbox( $checkout ) { echo '<div id="privacy_policy_and_refund_policy_checkbox"><h3>' . __('Términos y condiciones') . '</h3>'; woocommerce_form_field( 'privacy_policy', array( 'type' => 'checkbox', 'class' => array('form-row privacy-policy'), 'label' => __('He leído y acepto la política de privacidad'), 'required' => true, ), $checkout->get_value( 'privacy_policy' ) ); woocommerce_form_field( 'refund_policy', array( 'type' => 'checkbox', 'class' => array('form-row refund-policy'), 'label' => __('He leído y acepto la política de devoluciones'), 'required' => true, ), $checkout->get_value( 'refund_policy' ) ); echo '</div>'; } add_action( 'woocommerce_after_order_notes', 'add_privacy_policy_and_refund_policy_checkbox' );
2. Validar los campos antes de completar el pedido
A continuación, debes validar los campos antes de que se complete el pedido usando el hook woocommerce_checkout_process
.
function validate_privacy_policy_and_refund_policy_checkbox() { if ( ! isset( $_POST['privacy_policy'] ) ) { wc_add_notice( __( 'Debes aceptar la política de privacidad para continuar.' ), 'error' ); } if ( ! isset( $_POST['refund_policy'] ) ) { wc_add_notice( __( 'Debes aceptar la política de devoluciones para continuar.' ), 'error' ); } } add_action( 'woocommerce_checkout_process', 'validate_privacy_policy_and_refund_policy_checkbox' );
3. Guardar los valores de los campos
Para guardar los valores de los campos en los datos del pedido, puedes usar el hook woocommerce_checkout_update_order_meta
.
function save_privacy_policy_and_refund_policy_checkbox( $order_id ) { if ( isset( $_POST['privacy_policy'] ) ) { update_post_meta( $order_id, 'privacy_policy', sanitize_text_field( $_POST['privacy_policy'] ) ); } if ( isset( $_POST['refund_policy'] ) ) { update_post_meta( $order_id, 'refund_policy', sanitize_text_field( $_POST['refund_policy'] ) ); } } add_action( 'woocommerce_checkout_update_order_meta', 'save_privacy_policy_and_refund_policy_checkbox' );
4. Mostrar los valores en el backend (opcional)
Si quieres mostrar los valores de estos campos en el backend de WooCommerce, puedes usar los siguientes hooks:
function display_privacy_policy_and_refund_policy_in_admin_order_meta( $order ) { $privacy_policy = get_post_meta( $order->get_id(), 'privacy_policy', true ); $refund_policy = get_post_meta( $order->get_id(), 'refund_policy', true ); if ( $privacy_policy ) { echo '<p><strong>' . __( 'Política de Privacidad' ) . ':</strong> ' . __( 'Aceptada' ) . '</p>'; } if ( $refund_policy ) { echo '<p><strong>' . __( 'Política de Devoluciones' ) . ':</strong> ' . __( 'Aceptada' ) . '</p>'; } } add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_privacy_policy_and_refund_policy_in_admin_order_meta', 10, 1 );
Con estos pasos, podrás hacer frente a las peticiones de añadir RGPD al checkout de WooCommerce, comunes con los cambios de legislación y tendrás dos casillas de verificación obligatorias en tu formulario de checkout, que el cliente debe aceptar antes de completar la compra.
Deja un comentario