El problema
Por defecto, WooCommerce permite a los clientes cancelar ellos mismos sus pedidos solo si están pendientes, pero no lo permite si el pedido está en cualquier otro estado: procesando, completado, en espera, etc.
Ahora bien, se pierde mucho tiempo si el cliente quiere cancelar un pedido en cualquier otro estado, al no permitirle hacerlo a él mismo. Tendría que contactar con el gestor de la tienda – si está visible algún método de contacto – y luego tener que buscar el pedido, cancelarlo manualmente, etc.
Si tu tienda tiene muchas ventas y quieres permitir a los clientes la posibilidad de cancelar sus pedidos ellos mismos en otros estados del pedido distintos del de «Pendiente» te toca añadir esta funcionalidad, no incluida en WooCommerce como te decía.
La solución
Para incluir esta funcionalidad tenemos que usar un código que permita la cancelación de pedidos para otros estados de pedido, aparte del de «pendiente», y que, además, nos permita definir algunos límites, como por ejemplo un límite de tiempo para poder cancelar un pedido.
Aquí tienes un código de ejemplo:
/* Permitir al cliente cancelar el pedido */ add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'ayudawp_cancelar_pedidos', 10, 2 ); function ayudawp_cancelar_pedidos( $statuses, $order ){ $custom_statuses = array( 'completed', 'pending', 'processing', 'on-hold', 'failed' ); //Estados permitidos para cancelar $duration = 30; //Antiguedad maxima del pedido en dias if( isset($_GET['order_id'])) $order = wc_get_order( absint( $_GET['order_id'] ) ); $delay = $duration*24*60*60; $date_created_time = strtotime($order->get_date_created()); $date_modified_time = strtotime($order->get_date_modified()); $now = strtotime("now"); if ( ( $date_created_time + $delay ) >= $now ) return $custom_statuses; else return $statuses; }
En el código anterior hay 2 líneas que seguramente querrás modificar para adecuarlas a tus necesidades:
$duration = 30;
– Esta es la antigüedad en días del pedido para que el cliente vea el botón de cancelación y pueda cancelar fácilmente el pedido.$custom_statuses = array( 'valor' , 'valor');
– Aquí debes poner un valor para cada estado del pedido en el que se mostrará el botón, y la posibilidad de cancelar el pedido.
Dependiendo de los límites que definas en estos campos se mostrarán o no los botones de cancelar los pedidos en la página de la cuenta del cliente.
Dónde puedo pegar este código
Puedes añadir este código en varios sitios de tu instalación WordPress y hacerlo de varias maneras. En esta guía te explico todas las posibilidades:
Cómo y dónde pegar en WordPress códigos PHP, JS, CSS y funciones que encuentres por ahí
La entrada Cómo permitir a los clientes cancelar sus pedidos en WooCommerce la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.
0 Commentaires