Almacenar el checked de «Acepto las condiciones de compra» de WooCommerce en la DDBB
Funciones útiles para WooCommerce VI
En esta entrada vamos a añadir una funcionalidad que nos puede ser muy útil por temas legales.
Por defecto, en WooCommerce hay que marcar un check como que hemos leído las condiciones legales de la tienda, pero ese check no se almacena en ningún sitio. Simplemente hay que marcarlo (is required) para que nos deje continuar con nuestra compra.
Hasta aquí todo bien, pero ¿cómo podemos demostrar ante un juez que ese check ya estaba cuando el usuario compró en nuestra tienda hace un mes?
Con este código añadimos en base de datos un post_meta
al pedido con la clave '_term'
y el valor 'aceptado'
vinculado al pedido.
Lo primero, como siempre, es definir la función en el archivo functions.php del tema que estamos creando o en del Child-Theme si hemos optado por modificar un tema comprado:
[php]
function woo_save_terms_and_conditions_status( $order_id ) {
if ($_POST[‘terms’]) update_post_meta( $order_id, ‘_terms’, esc_attr($_POST[‘terms’]));
}
[/php]
Después la «enganchamos» al hook 'woocommerce_checkout_update_order_meta'
con un 'add_action'
así:
[php]add_action(‘woocommerce_checkout_update_order_meta’, ‘woo_save_terms_and_conditions_status’);[/php]
Esto nos guardará en DDBB el valor 'aceptado'
en nuestro pedido.
Para mostrarlo en el backend de WooCommerce al revisar los pedidos, añadiremos la siguiente función:
function woo_display_terms_and_conditions_status($order){
$terms = get_post_meta( $order->id, '_terms', true );
$terms_status = ( $terms == 'on' ? __('aceptado', 'nombre_de_tu_tema') : __('indefinido', 'nombre_de_tu_tema') );
echo '<p><strong>'.__('Términos y condiciones', 'nombre_de_tu_tema').':</strong> ' . $terms_status . '</p>';
}
Y la anclamos al hook 'woocommerce_admin_order_data_after_billing_address'
de la siguiente forma:
add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_display_terms_and_conditions_status', 10, 1 );
Con esto podemos quitarnos algún dolor de cabeza en nuestra tienda online
[finalpost]
2 Replies to "Almacenar el checked de «Acepto las condiciones de compra» de WooCommerce en la DDBB"
Hola!
Sabrías decirme como se puede dejar automarcado el check de aceptación de términos y condiciones en la página de formulario de compra de woocommerce? me lo pide un cliente y, aunque yo no se lo recomienda, insiste…
Gracias y feliz fin de semana
Hola Jaime,
Sólo tienes que añadir estas líneas en tu archivo functions.php (recuerda hacer un ChildTheme si no es un tema desarrollado por ti):
/**
* Marcar por defecto la casilla de "Acepto los términos y condiciones" de WC
*
* @return bool
*/
function jjlazo_wc_terms( $terms_is_checked ) {
return true;
}
add_filter( 'woocommerce_terms_is_checked_default', 'jjlazo_wc_terms', 10 );
Un saludo y espero que le sirva a tu cliente 😉