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 acepta preautorizaciones

RedSys aparte de los pagos normales, llamados autorizaciones, acepta una variedad de operaciones: desde autorizaciones…

hace % días

Ordenar productos de forma diferente por cada categoría en WooCommerce

WooCommerce permite ordenar los productos de una forma nativa, para poder presentar primero los que…

hace % días

Evitar que se instalen los temas por defecto de WordPress cada vez que actualizas el núcleo

Cada vez que hay una actualización grande del núcleo WordPress, por defecto WordPress te instala…

hace % días

Pantalla LCD: ¿qué es?

Una pantalla LCD es una pantalla delgada y hecha de cristal líquido. Se usa en…

hace % días

Flujos de pago con Gravity Flow y RedSys

De todos los plugins que existen para Gravity Forms, que son numerosos porque la propia…

hace % días

CMS, ¿Qué es y qué ventajas tiene?

Un CMS, como WordPress, facilita la creación y gestión de contenido en la web, sin…

hace % días