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:
- Creación del nuevo estado de pedido para que esté disponible al editar un pedido
- Registro del nuevo estado de pedido en la tabla de estados de pedido
- 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.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
















De lujo como siempre, gracias.
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
Hola Rodrigo, quizas te pueda ser util el siguiente recurso: https://woocommerce.com/es-es/products/subaccounts-multi-user-accounts/
Con esta extensión, los clientes pueden tener varias cuentas, así como cuentas secundarias con permisos configurables, mediante la misma cuenta principal.
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.
Hola! Y cómo puedo crear más de un estado? no me funciona duplicar el texto que propones, me ayudarías?