Tutoriales

Pedidos procesando y completado editables en WooCommerce

Cuando tienes un comercio electrónico, lo normal es que una vez recibes el pago, no puedas editarlo. En otras palabras si el estado del pedido es «Procesando» o «Completado», no podrás editar su contenido. El cliente pidió una cosa y ha pagado por ello. ¿Por qué vas a editarlo?

Pues esa es la norma, lo que suele pasar por lo general, pero es verdad que más de un cliente de WooCommerce, que con el tema de las pasarelas de pago para WordPress conocemos bastantes, lo necesita. ¿Por qué? Razones cada uno tiene las suyas, pero es verdad, que por defecto, lo único que podrás hacer en caso de querer modificar un pedido es:

  • Crear una devolución y devolver parte del mismo. El problema de este método, es que es posible que realmente no sea devolución como tal.
  • Otra posibilidad es pasar el pedido a «Pendiente de pago», editarlo y volverlo a pasar a procesando. Este segundo método es más limpio a priori, pero como el pedido vuelve a pasar a «Procesando», tiene un inconveniente y es que se ejecutan todos los hooks asociados (por ejemplo el correo de «Nuevo pedido») y genera problemas y dudas entre gestores de la tienda e inconvenientes.

¿Cuál es la solución? WooCommerce ofrece un hook para decir si un estado es editable, así que será el que usemos. Os cuento cómo.

Cómo editar pedidos procesando o completados con WooCommerce

El hook en cuestión es wc_order_is_editable, es de tipo filtro y recibe dos parámetros:

  • $is_editable: un parámetro que incluye si el pedido actual es editable o no
  • $order: el objeto del pedido

Para el caso que nos ocupa, deberíais poner en vuestro tema hijo o plugins de funciones la siguiente función:

add_filter( 'wc_order_is_editable', 'cod_pedidos_editables', 10, 2 );
function cod_pedidos_editables( $is_editable, $order ) {
    if( in_array( $order->get_status(), array( 'processing', 'completed' ) ) )
        return true;

    return $is_editable;
}

Como veis, básicamente accedemos al estado del pedido, vemos si es «procesando» o «completado» y si lo es, devolvemos true. Para todos los demás casos, devolvemos el que trae por defecto.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

RedSys para Contact Form 7 ahora muestra el justificante y el motivo del rechazo en la página de gracias

Ya está disponible la versión 2.2 de Contact Form 7 – Integración con RedSys, y…

hace % días

¿Qué aporta la integración de Bizum y métodos similares en el proceso de pago?

El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…

hace % días

Pagos recurrentes en Contact Form 7: suscripciones con RedSys, paso a paso

Hasta ahora, la integración de Contact Form 7 con RedSys solo sabía cobrar pagos únicos:…

hace % días

Cuotas personalizadas con RedSys

El pago fraccionado de RedSys para WooCommerce lleva un tiempo permitiendo dividir el precio de…

hace % días

Contact Form 7 – Integración con RedSys ya habla catalán, gallego y euskera

Ya está disponible la versión 1.24 de Contact Form 7 - Integración con RedSys, y…

hace % días

Calendario de pagos a medida en WooCommerce Subscriptions: cobra en las fechas que tú decidas

Hasta ahora, cobrar una suscripción en WooCommerce significaba aceptar una regla muy simple: eliges un…

hace % días