Una de las acciones que podemos realizar dentro de un pedido en WooCommerce es editar los productos, envío, impuestos… Asociados a los productos del mismo pedido. Esta opción solo se puede hacer, si el pedido está en los estados «pendiente de pago» o «En espera».
Normalmente lo que se hace es cambiarlo a estos estados, el problema es que mandamos un email automático al cliente y se puede asustar de que no llegó a pagar su pedido. Es por esto, que lo ideal sería que se pueda editar en otros estados del pedido. Y esto es lo que vamos a ver en este tutorial, sin utilizar un plugin, solo añadiendo un simple código.

Índice
Editar un pedido en estado procesando
Deberemos añadir el siguiente código al functions.php de nuestro child theme o bien a nuestro plugin de funcionalidades como explico aquí.
add_filter( 'wc_order_is_editable', 'dl_modificar_pedido_procesa', 9999, 2 );
function dl_modificar_pedido_procesando( $allow_edit, $order ) {
if ( $order->get_status() === 'processing' ) {
$allow_edit = true;
}
return $allow_edit;
}

Y con esto conseguiremos editar el pedido sin problema si el estado es procesando. Lo puedes modificar con otros estados del pedido, deberás modificar processing por:
- Pendiente de pago: pending
- En espera: on-hold
- Procesando: processing
- Completado: completed
- Fallido: failed
- Cancelado: cancelled
- Reembolsado: refunded
Editar un pedido en varios estados de pedido
Para ello por ejemplo añadimos este código, que te permite hacerlo en los estados: completado, cancelado y procesando:
add_filter( 'wc_order_is_editable', 'dl_modificar_pedido_estados', 9999, 2 );
function dl_modificar_pedido_estados( $allow_edit, $order ) {
$editable_statuses = array('processing', 'completed', 'cancelled');
if ( in_array( $order->get_status(), $editable_statuses ) ) {
$allow_edit = true;
}
return $allow_edit;
}
Espero que os haya servido, os dejo aquí otros tutoriales relacionados con los estados del pedido:
Crear nuevos estados de Pedido en WooCommerce
Crear un enlace de pago en un pedido de WooCommerce
Deja una respuesta