Añadir estados de pedido personalizados a WooCommerce 2020

Añadir estados de pedido personalizados a WooCommerce 2020

No todos los negocios son iguales, y por ello no todos tienen las mismas necesidades en cuanto a la gestión. Esto, que es cierto en general, también lo es al nivel más específico de la gestión de pedidos. Por eso, aunque WooCommerce incluya unos estados de pedido más o menos estandarizados, esto ni de lejos cubre las necesidades de todo el mundo. Y claro, pudiendo adaptar WooCommerce a nuestras necesidades, ¿por qué íbamos a adaptar nuestro negocio a lo que WooCommerce ofrece por defecto? No tiene sentido, y por eso hoy vamos a ver cómo podemos añadir a WooCommerce estados de pedido personalizados.

Y no sólo eso: veremos cómo podemos integrar estos estados de pedido para adaptarlos a nuestro flujo de trabajo o de preparación de pedidos, desde el momento en que el usuario realiza la compra hasta que el pedido está enviado, y cómo podemos asociarles correos electrónicos automáticos para que nuestros clientes estén informados en todo momento de en qué punto del proceso se encuentra su pedido.

Personalizar estados de productos en woocommerce con plugin

Los estados de pedido estándar de WooCommerce y los flujos de preparación de pedidos

Aunque ya ha llovido desde entonces, el contenido de esa entrada sigue siendo válido ya que WooCommerce sigue incluyendo los mismos estados de pedido por defecto, con el mismo flujo:

  • En espera
  • Pendiente de pago
  • Procesando
  • Completado
  • Fallido
  • Cancelado
  • Reembolsado

Esto en general está bastante bien, y se puede (más o menos) adaptar a los flujos de trabajo y preparación de pedidos de gran cantidad de comercios electrónicos. Pero no siempre es así, porque las cosas no siempre son tan sencillas.

Por ejemplo, lo que WooCommerce llama tan simplificadamente «Procesando» en muchas empresas puede denotar muchas fases, como «Agendado», «En proyecto», «En fabricación» o vete tú a saber: cada caso particular puede ser diferente.

Otro ejemplo muy típico es el de los pedidos enviados. Cuando el pedido se marca como completado el cliente recibe un correo electrónico notificándoselo, a pesar de que generalmente aún no ha recibido nada. Y eso, aunque no lo parezca, es un caballo de batalla continuo: consultas, reclamaciones…

Y es cierto en realidad: el pedido no está completado hasta que lo recibe el cliente. De hecho, cuando un futuro gestor de ecommerce se acerca a WooCommerce por primera vez, una de las dudas que tiene es acerca de los pedidos enviados: ¿qué estado de pedido le corresponde en realidad? Al fin y al cabo, él ya ha terminado su parte del proceso…

Nuevos estados de pedido en WooCommerce

Es obvio que, en multitud de ocasiones, encontramos que faltan estados de pedido, que los que crea WooCommerce por defecto no cubren las necesidades. Por ejemplo, en el caso típico (y bastante completo) de una empresa o profesional que fabrique los productos bajo demanda, podría ser algo así:

Procesando > En fabricación > En montaje > En empaquetado > Enviado

Ya ves que aquí WooCommerce sólo proporciona el primer estado de pedido (Procesando). Usando los estados de pedido estándar de WooCommerce el cliente estaría sin información veraz sobre el estado de su pedido durante, seguramente, varios días, hasta que de pronto le llegue el aviso de que el pedido se ha completado. Y él, sin información y (aún) sin el producto comprado. El resultado: consultas, llamadas, correos, y pérdida de tiempo por ambas partes.

Afortunadamente, siempre (o casi) podemos adaptar WooCommerce a nuestras necesidades particulares. En este caso la cosa es tan sencilla (a priori) como crear nuevos estados de pedido personalizados, adaptados a cada caso particular.

Añadir estados de pedido a WooCommerce por código

Hacer esto es relativamente sencillo en su forma más simple. De hecho, bastan dos funciones para tener un nuevo estado de pedido personalizado en WooCommerce: una que lo crea y otra que lo añade a la lista de estados de pedido reconocidos por WooCommerce.

Siguiendo con el ejemplo de antes, si queremos crear un estado de pedido llamado En fabricación, podríamos hacer algo así:

add_action( 'init', function() {
    register_post_status( 'wc-en-fabricacion', array(
        'label'                     => 'En fabricación',
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'En fabricación (%s)', 'En fabricación (%s)'),
    ) );
}, 10 );
 
add_filter ( 'wc_order_statuses', function( $estados ) {
    $estados['wc-en-fabricacion'] = 'En fabricación';
    return $estados;
}, 10, 1 );

Pero seguro que, por poco tiempo que lleves trabajando con WooCommerce, te das cuenta de un montón de carencias de esta funcionalidad básica, que serán necesarias para poder operar con normalidad:

  • No hay botones de acción: si quieres cambiar el pedido de estado, hay que editarlo y usar el desplegable interior
  • No hay acción en lote para pasar varios pedidos al nuevo estado de pedido de forma simultánea
  • No hay aparejadas notificaciones por correo electrónico, ni al cliente ni (en caso necesario, por ejemplo para control interno) al administrador

Puede ser, además, que se te haya pasado por alto alguna otra carencias más, como por ejemplo que los pedidos en el nuevo estado no se sumarán a los informes de ventas de WooCommerce. Para el ejemplo puede no hacer falta, pero quizá queramos crear un estado de pedido «Enviado» en que los pedidos quedarían finalmente. Y, si no cuentan como completados, no tendremos todos esos pedidos incluidos en los informes.

Deja un comentario