Hola
Tengo un problema con los pedidos, varios clientes nos avisan de que cuando están realizando un pedido, llegan a Finalizar compra y por el motivo que sea dan para atrás, empiezan a tener problemas, si solo quedaba una unidad de ese producto les dice que ya no lo pueden comprar o a veces les dice que el pedido ya existe.
Estuve haciendo pruebas para entender el funcionamiento. Cuando el pedido está pendiente de pago, no deja hacer la compra de ese producto (el que tenía stock a 1) a otro cliente, esto es normal.
Si no lo cancelo y vuelvo atrás me deja seguir comprando otros productos, tengo el producto de stock a 1 todavía en el carrito, pero puedo llegar hasta el pago en el TPV.
Si llego con una compra hasta el TPV y cancelo, vuelvo atrás y puedo seguir comprando y llegué hasta el TPV.
Con esto quiero aclarar los pasos que parece que van bien, no sé exactamente qué hacen los cliente, darán 20 vueltas, pero me está provocando un montón de pedidos cancelados y los clientes cansados no compran.
Parece que la solución está siendo eliminar esos pedidos cancelados, entonces, pueden volver a empezar y pueden comprar sin problemas.
Buscando en Internet, encontré este código para eliminar automáticamente los pedidos Cancelados:
function wc_remove_cancelled_status( $statuses ){ if( isset( $statuses['wc-cancelled'] ) ){ unset( $statuses['wc-cancelled'] ); } return $statuses; } add_filter( 'wc_order_statuses', 'wc_remove_cancelled_status' );
Desaparecen todos los pedidos Cancelados, pero cuando hago una prueba de pedido y lo cancelo, se queda permanentemente en Pendiente de pago, entro en el
pedido y resulta que la opción Cancelado desapareció. Esto no me vale, porque el problema persiste y los siguientes pedidos quedarían todos pendientes de
pago, solo eliminó los anteriores.
Por cierto, en los ajustes de WooCommerce puse el tiempo de "Mantener en inventario" en 2 minutos, pensé que al cabo de ese tiempo los pasa a Cancelado, pero no me lo hace, pasaron 6 minutos y no lo cambió:
¿Alguna ayuda para poder eliminar de forma automática los pedidos cancelados?
Gracias
Hola
Acabo de refrescar los pedidos y 47 minutos después el pedido ya aparece como Cancelado, lo que no sé es qué criterio de tiempo sigue, porque los dos minutos no.
Gracias
Hola Carlos,
Solamente con esta función:
function wc_remove_cancelled_status( $statuses ){
if( isset( $statuses['wc-cancelled'] ) ){
unset( $statuses['wc-cancelled'] );
}
return $statuses;
}
add_filter( 'wc_order_statuses', 'wc_remove_cancelled_status' );
Debería eliminar las ordenes canceladas pero de forma instantánea, es posible que al insertarlo luego de tener las ordenes canceladas se tardara por que el sistema tiene que encontrar y eliminar estas ordenes, verifica creando una nueva orden y cancélala para verificar si se efectúa de forma automática.
Un saludo 🖐️
Hola
He vuelto a poner ese código, al instante elimina todos los pedidos cancelados de fechas anteriores.
Procedo a hacer una compra, al llegar al TPV cancelo, me sale el mensaje de pedido cancelado, pero al ir a Pedidos me aparece Pendiente de pago, y mi duda es si en algún momento lo va a pasar a Cancelado y eliminarlo, porque necesito que sea al momento, porque la opción Cancelado entre la lista de acciones ya no aparece.
Gracias
Hola Carlos,
Efectivamente, de hecho el tiempo para esto puedes cambiarlo directamente en los ajustes de woocommerce en:
Woocommerce > Ajustes > Productos > Inventario, la segunda opción
De esta forma al momento de pasar este tiempo se cancela automáticamente el pedido.
Un saludo 🖐️
Hola
Debería ser así, pero no pasa.
Acabo de refrescar y pasaron 40 minutos y sigue en Pendiente de pago, no lo cancela. Como te puse en la imagen anterior, no sé si será porque la opción de Cancelado es como si no existiera, verás que en el desplegable no aparece. Te pongo captura de la configuración en Inventario y la lista de pedidos donde siguen en Pendiente de pago.
Gracias
Hola Carlos,
En este caso coméntanos cual es la url para darle un mejor vistazo, adicional esta herramienta de auto cambio debería funcionar ya que es innata del woocommerce, has instalado algún otro function que pueda estar deshabilitando esta función?
Esperamos la url para verificar a detalle, un saludo 🖐️
Hola
La URL es: https://www.badumbadero.com/
La función de WooCommerce funcionaba antes de introducir el código del que hablamos en functions. Antes al cabo de 60 minutos el estado del pedido Pendiente de pago pasaba a Cancelado. Cuando lo cambié a dos minutos no lo hacía en ese tiempo, pero sí lo hice al cabo de 40 minutos (aunque parezca raro).
Pero fue al introducir el código para eliminar los pedidos cancelados, cuando el pedido se queda permanentemente en Pendiente de pago, por eso te mandaba la imagen de que Cancelado ya no aparecía disponible en el desplegable de estados.
Hace ya tres horas del pedido y sigue en Pendiente de pago.
Muchas gracias
Hola
Te sucede con cualquier método de pago?, o no llegas hasta el pago?
Podría ser también un problema con el cron de tu sitio, revisa la siguiente discusión:
https://wordpress.org/support/topic/auto-cancel-order-hold-stock-doesnt-work/
Saludos.
Hola
No tiene nada que ver con el método de pago, da igual porque a veces se cancela antes de llegar al pago, de todos modos, con que pase con el modo de pago de tarjeta es suficiente para tener que buscar una solución.
De todos modos, probé con Paypal, pero en cuando te remite a la plataforma de Paypal, si pagas no hay problema, pero si cierro la ventana, me devuelve a Finalizar compra y el pedido no se llega a generar.
La mayoría de la gente, entra, mete en el carrito y paga sin problema, da igual el método, el problema es cuando cancelan y el pedido queda pendiente de pago o cancelado, tal y como expliqué al principio del tema.
Como digo, el problema con el código, es que el pedido no pasa de Pendiente de pago a Cancelado, tal vez alguna modificación en ese código que elimine los pedidos Cancelados de la lista, pero que no elimine el Estado Cancelado de todos los sitios, para que cuando quede un pedido en Pendiente de pago, pueda pasar a Cancelado y entonces el proceso lo elimine.
Gracias
Hola
Teóricamente con la configuración de minutos que tienes debería ser suficiente, salvo el cron de tu sitio no este trabajando correctamente.
Prueba instalar este plugin: https://wordpress.org/plugins/wp-crontrol/
Verifica qué tareas cron se crean cuando haces un pedido y lo cancelas y verifica si se llega a completar dicha tarea.
Saludos.
Hola
He hecho lo que me indicas, pero no sé interpretar las tareas cron, he hecho dos capturas de pantalla, antes y después de cancelar un pedido, por si podéis ayudarme a interpretarlo y averiguar algo.
Gracias
Hola
En la imagen que envías indica que no tienes activo el cron, veo que te sale un error 503.
Has realizado alguna modificación de código recientemente? en el archivo wp-config.php o .htaccess?, podrías probar deshacer los cambios.
Podrías igualmente consultar a través de tickets de soporte para ver si a nivel de servidor hay algún log.
Saludos.
Hola
La respuesta al ticket:
Te comento que cron sí se encuentra activo, sin embargo el error es porque directamente wordpress se encuentra bloqueado hacia nuestro servidor y por ello no pueden comprobar la activación, sin embargo, para optimizar tu sitio y para tener un mayor control, lo que nosotros recomendamos es desactivar cron y programar una tarea para ejecutar cron de wordpress desde el cron de cPanel, en la siguiente guía podrás ver cómo realizarlo:
https://guias.webempresa.com/preguntas-frecuentes/crear-tareas-programadas-tareas-cron-cpanel/
De esta forma garantizas que las tareas se ejecuten, sin embargo el error 503 de cron de wordpress seguirá ahí, puesto que como te comento, wordpress no tiene forma de saber que se ejecuta o no.
Ya te puedo decir que no tengo ni idea de lo que dice, eché un ojo al enlace pero no sé que tendría que poner en comando, donde supongo que iría la tarea, los demás campos son para la frecuencia.
¿Qué hago?
Gracias
Hola
Si que es cierto que por temas de rendimiento se sugiere quitar el cron de WordPress (que es un cron virtual) y usar en su lugar un cron real, realizando un cron a nivel de servidor.
Lo importante es que tengas un cron activo, ya sea por servidor, o por WordPress.
Revisa a nivel de tu archivo wp-config.php si tienes algún código que invalida el cron, busca si tienes algo como esto:
define('DISABLE_WP_CRON', true);
Puedes ubicar el archivo wp-config.php en la raiz de los archivos de tu sitio, puedes usar el Administrador de Archivos de tu Cpanel para verifciar el contenido de este archivo.
https://guias.webempresa.com/preguntas-frecuentes/administrador-archivos-cpanel/
Saludos.