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