Cómo crear un estado de pedido personalizado en WooCommerce

(Votos: 1 Promedio: 5)

Parto de la base de que no todas las tiendas online hechas con WooCommerce tienen las mismas necesidades y muchas veces es posible que necesites implementar funcionalidades extra para que se adapten a tu negocio.

Algo con lo que me he peleado a menudo han sido los estados de pedido, y su rigidez a la hora de indicar exactamente en qué momento del flujo de compra se encuentra el mismo. Por ejemplo, el estado de pedido “enviado” es uno de los que más echan de menos mis clientes.

Aunque WooCommerce incluye unos cuantos más o menos estándar, existen multitud de casos en los que no llegan para explicar exactamente qué está pasando. Y, aún que no podamos añadir nuevos desde el entorno gráfico de WooCommerce, sí lo podemos hacer mediante funciones o plugins.

Te voy a mostrar cómo puedes crear un estado personalizado con unas sencillas líneas de código.

Vamos a ello.

Flujo de los estados de pedidos de WooCommerce. Fuente: WooCommerce.

Qué es un estado de pedido en WooCommerce

Empecemos por el principio, y es definiendo qué es un estado de pedido en WooCoomerce.

El estado de pedido en WooCommerce es la característica que te permite saber en que punto del proceso de compra se encuentra tu pedido. Por defecto, WooCommerce incorpora 7 estados de pedido:

  • Pendiente de pago: el pedido ha sido registrado por la tienda, pero no se realizó el pago.
  • En espera: el pedido está esperando el pago, se reduce el inventario, pero se debe confirmar el pago.
  • Procesando: el pedido se ha registrado en la tienda y ha sido pagado. Los pedidos para los cuales tenemos confirmación automática del pago (por ejemplo, cuando utilizamos un método de pago de WooCommerce como tarjeta o Paypal) se guardan en este estado, excepto si son virtuales.
  • Completado: el pedido se ha enviado y no se requieren más acciones.
  • Fallido: el pago falló o se rechazó, por ejemplo, porque la tarjeta es inválida o no tiene fondos.
  • Cancelado: el pedido fue cancelado por el administrador de la tienda o por un cliente. Se restituye automáticamente el stock.
  • Reembolsado: el administrador de la tienda devuelve el dinero al cliente.

Como puedes ver, explican muchas situaciones, pero no todas. Y por ello a veces es necesario crear estados de pedido personalizados.

Estados de pedido en la ficha de producto.

Cómo crear un nuevo estado de pedido

Lo primero que tienes que hacer es abrir el archivo functions.php desde el administrador de WordPress. Lo encontrarás en Apariencia -> Editor de temas. Recuerda que debes tener un tema hijo instalado para que los cambios no se borren.

En mi ejemplo voy a crear el estado “posventa”. A nivel lógico será el momento en el cual, una vez completado el pedido, realizaré acciones posventa al cliente.

Para ello necesito añadir dos funciones:

/**
 * Registramos un nuevo estado de pedido de WooCommerce
 * Estado de pedido "posvenda"
 */
function registro_posvenda_estado_pedido() {
    register_post_status( 'wc-posvenda', array(
        'label'                     => 'Posvenda', //Nombre público
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Posvenda (%s)', 'Posvenda (%s)' )
    ) );
}
add_action( 'init', 'registro_posvenda_estado_pedido' );

Con esta primera función, registro el nuevo estado del pedido:

  1. Le asigno el nombre “interno” del nuevo estado.
  2. Le asigno diferentes propiedades como la etiqueta pública, la capacidad de mostrarse en la lista de pedidos, etc.

/**
 * Añadimos el estado "posvenda" a la lista de estados que puede tener un pedido
 * Lo colocamos a continuación del estado "completado", pues sería su situación lógica
 */
function anadir_posvenda_lista( $order_statuses ) {
    $new_order_statuses = array();
    // poñémolo despois do Completado
    foreach ( $order_statuses as $key => $status ) {
        $new_order_statuses[ $key ] = $status;
        if ( 'wc-completed' === $key ) {
            $new_order_statuses['wc-posvenda'] = 'Posvenda';
        }
    }
    return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'anadir_posvenda_lista' );

Con esta segunda función, lo que hago es que se muestre en el desplegable de los estados del pedido en la ficha el pedido concreto.

Una cosa interesante es en que posición queremos que aparezca. En mi caso lo que hago es ponerlo a continuación del estado “completado”, porque ese sería el funcionamiento lógico.

Conclusión

Como puedes ver, no es muy difícil, y ayuda mucho a la hora de adaptar los estados de pedido a las necesidades de tu tienda online.

¿Cuáles son los que has creado?

Cuéntamelo en los comentarios.

Los últimos artículos

Deja un comentario



· Descarga ahora la masterclass gratis ·

Las claves de una web profesional y rentable

Responsable:

Anxo Sánchez García (yo mismo).
Tlf: (+34) 678 373 399.
Email: info(@)anxosanchez.com.

Finalidad:

Gestionar, atender y responder las solicitudes de información o cualquiera comunicación hecha a través de este formulario.

Legitimación:

Consentimiento del usuario que hace uso de la herramienta.

Destinatarios:

Los datos que me envías están almacenados en los servidores de Raiola Networks. Puedes ver aquí  su política de privacidad.

Derechos:

Puedes acceder, rectificar y suprimir tus datos.

Más información:

Échale un vistazo a mi política de privacidad.

Anxo Sánchez en formato tablet