Oferta SiteGround Black Friday

Cómo añadir un nuevo estado de pedido personalizado a WooCommerce

Si quieres una tienda online rápida y prácticamente gratis nada mejor que WooCommerce, el plugin gratuito para WordPress que hace montar un comercio electrónico en unos pocos clics, pero tiene algunas pequeñas carencias de base.

Eso sí, luego viene al rescate el sistema de plugins de WordPress, que cubren los espacios que no cubre una instalación por defecto de WordPress o, en este caso WooCommerce.

Los estados de pedido de WooCommerce por defecto

Una de estas carencias se refiere a los estados de pedido disponibles que, por defecto, son los siguientes:

  • Pendiente de pago
  • Fallido
  • Procesando
  • Completado
  • En espera
  • Cancelado
  • Reembolsado
  • Identificación necesaria

Además de estos estados de pedido por defecto de WooCommerce, hay otros que pueden ir apareciendo a medida que instalas plugins.

Por ejemplo, si instalas un plugin de facturación puede aparecer un nuevo estado de «Enviada factura en PDF», o si es un plugin de seguimiento de envíos, algunos plugins añaden estados de pedido como «Pendiente de envío», «Enviado», «Entregado», etc.

Pero ¿qué pasa si yo quiero añadir un estado de pedido diferente, por cuestiones de seguimiento propias de mi tienda online?

Podrías buscar un plugin que añada justo ese estado de pedido, y te ayude en «ese» seguimiento, pero no siempre lo vas a encontrar, así que hay que ponerle solución, creando un nuevo estado de pedido personalizado, que no dependa de plugins.

Cómo añadir un nuevo estado de pedido personalizado a WooCommerce con código

La primera opción que tenemos es solucionarlo con un poco de código a medida, que cree el nuevo estado de pedido y nos permita disponer de esta nueva «etiqueta» de seguimiento y filtrado de pedidos.

El código sería como el de este ejemplo:

/* Nuevo estado de pedido */
add_action( 'init', 'ayudawp_nuevo_estado_pedido_enviado' );
function ayudawp_nuevo_estado_pedido_enviado() {
register_post_status( 'wc-enviado', array(
'label' => _x( 'Enviado', 'Order status', 'woocommerce' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Enviado <span class="count">(%s)</span> ', 'Enviados <span class="count">(%s)</span>', 'woocommerce' )
) );
}
// Registro en wc_order_statuses.
add_filter( 'wc_order_statuses', 'ayudawp_pedido_enviado' );
function ayudawp_pedido_enviado( $order_statuses ) {
$order_statuses['wc-enviado'] = _x( 'Enviado', 'Order status', 'woocommerce' );
return $order_statuses;
}
// Añadir estado a acciones en lote en el orden que queramos
function rename_or_reorder_bulk_actions( $actions ) {
$actions = array(
'trash' => $actions['trash'], //Enviar a papelera
'mark_processing' => $actions['mark_processing'], //Marcar como procesando
'mark_on-hold' => $actions['mark_on-hold'], //Marcar como en espera
'mark_cancelled' => $actions['mark_cancelled'], //Marcar como cancelado
'mark_completed' => $actions['mark_completed'], //Marcar como completado
'mark_enviado' => __( 'Cambiar estado a enviado', 'textdomain' ), // El nuevo estado
);
return $actions;
}
add_filter( 'bulk_actions-edit-shop_order', 'rename_or_reorder_bulk_actions', 20 );

Este código consta de 3 partes:

  1. Creación del nuevo estado de pedido para que esté disponible al editar un pedido
  2. Registro del nuevo estado de pedido en la tabla de estados de pedido
  3. Añadir una acción en lote para poder cambiar también al nuevo estado de pedido desde el listado de pedidos

De este código debes cambiar los textos que identifican el nuevo nombre del estado de pedido (Enviado), así como el array del estado (wc-enviado), si quieres.

¿Dónde tengo que añadir este código?

Si nunca has añadido un código personalizado a tu instalación de WordPress aquí tienes una guía sencilla y rápida con varios métodos para hacerlo:

Cómo y dónde pegar en WordPress códigos PHP, JS, CSS y funciones que encuentres por ahí

Cómo añadir un nuevo estado de pedido personalizado a WooCommerce con plugins

Si no te animas con un sencillo código como el anterior siempre puedes recurrir a plugins que te faciliten la tarea, y aquí tienes los mejores, que pueden ayudarte con esta personalización…

Custom Order Status for WooCommerce (gratis)

Este plugin gratuito permite crear, modificar y borrar fácilmente nuevos estados de pedido personalizados, para los que puedes editar:

  • El slug del estado de pedido personalizado.
  • La etiqueta (nombre visible) del estado de pedido personalizado.
  • El icono del estado de pedido personalizado.
  • El icono y color de la columna del estado de pedido personalizado

Para ello dispone de una sencilla interfaz, en la que crear los nuevos estados de pedido personalizados.

Al ser una versión gratuita no permite personalizar los emails ni los estados de pedido por defecto pero en lo que se refiere a nuevos estados de pedido personalizados puedes crearlos y modificarlos a tu gusto muy fácilmente.

WooCommerce Order Status Manager ($49)

De los creadores de WooCommerce también tenemos este plugin, de pago pero barato, que nos permite crear estados de pedido personalizados de manera muy sencilla.

Para empezar, solo con activar el plugin ya tienes mejoras, pues sin que tengas que configurar nada por sí solo añade colores e iconos a los estados de pedido por defecto, lo que facilita identificarlos a golpe de vista.

Pero no solo eso, sino que puedes personalizar totalmente los colores y más aspectos de los estados de pedido por defecto, así como ajustes de los correos electrónicos de cada estado de pedido.

En cuanto a la creación y personalización de nuevos estados de pedido, pues lógicamente puedes hacer lo mismo que con los estados de pedido existentes, pero desde cero, claro.

Y, como con los estados existentes, también puedes configurar si se mandará un email al pasar a este estado de pedido o no y a quienes.

Como puedes comprobar, y como no podía ser de otra manera, es un plugin muy completo, que cubre todas las necesidades que puedas tener a la hora de personalizar estados de pedido, tanto existentes como nuevos.


Y con esto ya estaría. Verás que crear estados de pedido personalizados para WooCommerce al final es muy sencillo, y tienes opciones gratuitas y de pago para conseguirlo.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 5

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

4 comentarios en “Cómo añadir un nuevo estado de pedido personalizado a WooCommerce”

  1. Hola Fernando: A partir de lo expuesto, será el camino crear un nuevo «Estado» para que ¿Un pedido pueda ser pagado por otro cliente?

    En otras palabras: Se requiere consolidar los pedidos de otros usuarios (supongamos el resto de los integrantes de la familia, cada uno con su cuenta independiente), con el fin de pagar un sólo envío. Con ello se logra «rastrear» lo que pediría cada individuo.

    Dado lo anterior, quizás seleccionando el tipo de pago «Paga un tercero», se cree un nuevo estado de pedido, y se active un workflow, tal que presente esa orden «por pagar» a otro cliente. Te agradeceré tu opinión, o si sabes de un plugin que resuelva al menos en parte lo descrito. Muchas Gracias

  2. Muchas gracias Fernando por la información, pero me asalta la duda de si hay alguna manera, de una vez creado los estados por código, simular el comportamiento de woocommerce con los emails. Quiero decir que al hacer el cambio de estado a uno personalizado, que se mande un correo automático usando una plantilla que recoja los datos del usuario.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba