En tiendas WooCommerce es común acumular pedidos con estado «fallido» debido a intentos de pago incompletos o errores en la transacción. Aunque estos pedidos no afectan directamente las ventas, pueden saturar la base de datos y generar confusión operativa, especialmente en sitios con alto volumen de tráfico.
Eliminar estos pedidos automáticamente puede ayudar a mantener la tienda ordenada y optimizada. A continuación, te mostramos cómo hacerlo con un simple código.
¿Cuándo se considera un pedido «fallido»?
- El cliente abandona el proceso de pago
- Hay un error con la pasarela de pago
- La transacción es rechazada por el banco o tarjeta
Riesgo de mantener pedidos fallidos
- Generan ruido en reportes
- Ocupan espacio innecesario en la base de datos
- Pueden causar problemas si el sitio genera accesos, QRs o correos automáticos al crearse el pedido
Solución: Borrar pedidos fallidos automáticamente
Puedes hacerlo con este snippet en tu plugin de funciones personalizadas o usando un plugin como Code Snippets:
add_action('woocommerce_order_status_failed', 'dani_eliminar_pedidos_fallidos_automaticamente');
function dani_eliminar_pedidos_fallidos_automaticamente($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
if ($order && $order->get_status() === 'failed') {
wp_delete_post($order_id, true); // Borrado permanente
}
}
Consideraciones:
- El código elimina el pedido de inmediato al cambiar a estado «fallido»
- Es borrado permanente (no va a papelera)
- Si prefieres enviarlo a la papelera usa
wp_trash_post($order_id);
Recomendaciones finales
- Asegúrate de tener un respaldo de la base de datos
- Prueba el snippet primero en un entorno staging o local
- Usa este método solo si estás seguro de que los pedidos fallidos no tienen valor operativamente
Con esta acción, mantendrás tu base de datos más limpia y evitarás posibles abusos por parte de usuarios que aprovechen accesos generados por errores.