Cómo cambiar el estado del pedido automáticamente en WooCommerce

Publicado: 2021-07-31

¿Quieres actualizar el estado del pedido en tu tienda? Has venido al lugar correcto. En esta guía, le mostraremos cómo cambiar automáticamente el estado del pedido en WooCommerce usando algunos scripts PHP. No se preocupe si no tiene habilidades de codificación avanzadas, le explicaremos cada script en detalle.

WooCommerce ofrece muchas funciones a los desarrolladores, por lo que si tiene habilidades de codificación, puede realizar todo tipo de personalizaciones y mejorar su tienda de comercio electrónico. En el siguiente tutorial, aprenderá todo lo que necesita saber sobre el estado del pedido. Esta es una función de WooCommerce que puede resultar muy útil a la hora de gestionar un gran número de pedidos. Será especialmente útil en la lista de pedidos de back-end, donde los gerentes de las tiendas pueden buscar fácilmente y realizar ciertas acciones en los pedidos con un estado específico.

Sin más preámbulos, saltemos directamente al tema.

¿Cuál es el estado del pedido en WooCommerce?

El estado del pedido es simplemente una etiqueta que tiene un pedido que representa el estado actual del pedido . Es similar a una taxonomía adjunta a una publicación que describe información específica sobre el estado actual de esa publicación. Por ejemplo, cuando un cliente presiona el botón "Realizar pedido", realiza un pedido en nuestra tienda. De forma predeterminada, el estado del pedido se establece en "Pendiente de pago".

Si la tienda está integrada con una pasarela de pago como PayPal o Stripe, se validará el estado predeterminado anterior (pendiente) y cambiará a " En espera " o " Error " según el resultado de la validación de la pasarela de pago. Luego, si el pago se ha completado, el estado del pedido cambiará automáticamente a " Procesando ", mientras que si el pago falla, su estado será " Error ".

Como puede ver, cada uno de estos estados nos brinda información relevante sobre el pedido. Esta automatización nos permite saber si se ha completado o no el pago del pedido para entregar nuestro producto al cliente.

Estado del pedido en WooCommerce

Estos son todos los estados de pedidos disponibles en WooCommerce y el significado de cada uno:

  • Pendiente de pago: El pedido ha sido recibido y no se ha registrado ningún pago. estamos esperando el pago
  • Error: el pago ha fallado por algún motivo. Esto significa que fue rechazado por la plataforma de pago (es decir, PayPal) o que requiere autenticación adicional (SCA)
  • Procesando: El pago ha sido recibido por la tienda, el stock del producto ha sido actualizado y la compra está en tiempo de entrega
  • Completado: El pedido se ha cumplido y completado. Este es el último estado de un pedido donde todo salió bien
  • En espera : el cliente no ha realizado ningún pago, por lo que el pedido requiere confirmación por parte del responsable de la tienda.
  • Cancelado : el administrador de la tienda o el usuario han cancelado el pedido en algún momento. Esto no requiere ninguna acción adicional, aunque se recomienda contactar al cliente para entender por qué ha cancelado el pedido.
  • Reembolsado: el pedido ha sido reembolsado, no se requiere ninguna otra acción

Ahora que entendemos mejor qué es el estado del pedido y su función, veamos por qué puede ser una buena idea actualizarlo.

¿Por qué cambiar la función de estado del pedido por defecto?

Cada tienda de comercio electrónico es diferente y tiene requisitos específicos. Es posible que algunas tiendas en línea no usen el estado del pedido en absoluto o que no los usen todos. Por ejemplo, si los compradores no pueden devolver los productos, es posible que la tienda no utilice el estado Reembolso .

Además, puede haber algunos casos en los que la función de estado de pedido predeterminado no sea suficiente y la tienda necesite un estado personalizado o una solución automatizada para la gestión del estado de sus pedidos. En estos casos, personalizar el comportamiento del estado del pedido es una gran solución para mejorar la gestión de la tienda. De esta manera, la tienda de comercio electrónico no necesitará actualizar el estado del pedido manualmente en todos los casos.

Esto ayudará a los propietarios de las tiendas a ahorrar tiempo y les permitirá concentrarse en cosas más importantes para mejorar sus negocios.

Cómo cambia el estado del pedido en WooCommerce

En este punto, es importante comprender que el estado del pedido cambia dinámicamente cuando WooCommerce se integra con una pasarela de pago como PayPal, Payoneer, Stripe, etc. Ten en cuenta que si actualizas el estado manualmente cuando no se espera, puedes romper el método de pago que aparece en tu tienda y los clientes no podrán seguir el proceso de compra.

Para comprender mejor lo que vamos a hacer, echemos un vistazo a cómo funciona el flujo de estado del pedido:

woocommerce-estado-del-pedido

De la documentación de WooCommerce

Como puede ver en el gráfico anterior, la primera etapa del estado del pedido es " Pendiente ". Inmediatamente después de eso, la pasarela de pago valida si el usuario puede completar el pago y cambia su estado a " En espera ", y luego a " Procesando " cuando el pago se completa con éxito. De lo contrario, cambiará a " Error ".

Después de esto, WooCommerce no hará nada más. El gerente de la tienda debe marcar el pedido como " Completado " o " Cancelado ". En este punto, es seguro cambiar el estado del pedido automáticamente (mediante programación), incluso si hay una pasarela de pago integrada.

Adicionalmente, es importante saber que cuando el estado cambie a “ Procesando ” o “ Reembolsado ”, se recalculará el stock de los productos involucrados en el pedido. Lo mismo ocurrirá con todas las estadísticas de la tienda online relacionadas con ese pedido.

Ahora que tenemos una idea clara de cómo cambia el estado del pedido, veamos cómo actualizar el estado del pedido en WooCommerce .

Cómo cambiar el estado del pedido automáticamente en WooCommerce

Echemos un vistazo a algunos scripts de muestra para cambiar el estado del pedido mediante programación en WooCommerce .

NOTA : Editaremos algunos archivos principales, así que antes de comenzar, asegúrese de hacer una copia de seguridad completa de su sitio. Además, cree un tema secundario o use cualquiera de estos complementos si aún no tiene uno, de modo que mantenga sus personalizaciones incluso después de actualizar su tema.

Cambiar el estado de todos los pedidos después de la compra

Si su tienda de comercio electrónico no está integrada con ninguna pasarela de pago que utilice el estado del pedido, puede poner todos los pedidos en espera justo después de que el cliente realice un pedido, en lugar de dejarlo como "Procesando". Echemos un vistazo a este script:

 función QuadLayers_change_order_status ($order_id) {  
                if ( ! $order_id ) {return;}            
                $pedido = wc_get_order( $order_id );
                if( 'procesando'== $pedido->get_status() ) {
                    $pedido->update_status( 'wc-on-hold' );
                }
}
add_action('woocommerce_thankyou','QuadLayers_change_order_status');

Usamos el woocommerce_thankyou para activar nuestra función justo después de que se haya realizado un pedido, y cambiamos el estado usando update_status() .

Como puede ver, el slug de estado tiene un prefijo (WC). Aunque la función también funciona sin el prefijo, es una práctica recomendada usarla.

woocommerce-estado-del-pedido-en-espera

Vale la pena señalar que puede usar cualquier otro estado e incluso los personalizados en lugar de "En espera" ajustando el código.

Modificar el estado del pedido desde el ID del pedido

El siguiente script cambiará el estado de un solo pedido. Por ejemplo, para cambiar el estado del pedido 115, usamos el siguiente fragmento:

 add_action('init',funcion(){
	$pedido = new WC_Order(115);
        $pedido->update_status('wc-processing'); 
});

Este es un script corto, por lo que hemos usado una función anónima en el gancho de WordPress 'init' .

Tenga en cuenta que esto no le permitirá realizar más cambios en el estado mientras el script esté habilitado.

Actualice el estado del pedido de WooCommerce para clientes que regresan

Este es otro ejemplo interesante para cambiar el estado del pedido automáticamente en WooCommerce. El siguiente script cambiará el estado del pedido a "Completado" solo si el usuario tiene un pedido anterior adjunto con el estado "Completado" o "Procesando".

 función QuadLayers_order_status_returning ($order_id) {
        // Obtener los pedidos de este cliente
         $id_usuario = wp_get_current_user();
        $pedidos_clientes = [];
        foreach (wc_get_is_paid_statuses() como $estado_pagado) {
            $pedidos_clientes += wc_get_orders( [
                'tipo' => 'pedido_tienda',
                'límite' => - 1,
                'customer_id' => $user_id->ID,
                'estado' => $estado_pagado,
            ]);
        }
            # pedido anterior existe
            si (cuenta ($ pedidos_clientes)> 0) { 
                     if ( ! $order_id ) {return;}            
                     $pedido = wc_get_order( $order_id );
                     if( 'procesando'== $pedido->get_status() ) {
                         $pedido->update_status('wc-completed');
                     }
            }
}
add_action('woocommerce_thankyou', 'QuadLayers_order_status_returning');

Esta puede ser una buena idea para agregar una capa de seguridad y mejorar la experiencia de compra de los clientes que regresan.

Cambiar el estado del pedido en un parámetro de URL

Este script de muestra cambiará a un estado de pedido específico cuando el parámetro URL esté presente en el navegador. Como estamos usando el gancho init de WordPress, el script funcionará en cualquier página de la tienda.

Además, editará el estado del pedido para el último pedido del usuario actualmente conectado. En este ejemplo, el estado del pedido cambiará a "Cancelado" cuando cualquier URL tenga el parámetro "revertir" como este: https://website.com/shop?st=revert

 add_action('init',funcion(){
    if(isset($_GET['st'])&&!empty($_GET['st']) ):
        $get_url = $_GET['st'];
 
        if($get_url=='revertir'):
            $id_usuario = wp_get_current_user();
            $pedido = wc_get_customer_last_order($user_id->ID);  
            $pedido->update_status( 'wc-cancelled' );
        terminara si;
    terminara si;
});

Crear un estado de pedido personalizado

En lugar de cambiar el estado de un pedido, en este ejemplo, crearemos un nuevo estado de pedido personalizado que podemos usar libremente. Esta es una buena idea si los estados existentes no son suficientes o si prefiere crear uno nuevo para mayor claridad. Una vez que crea un estado de pedido personalizado, puede usarlo con cualquiera de los scripts anteriores.

El siguiente script se registrará y agregará un nuevo estado a la lista de estado del pedido. En este caso, llamaremos al nuevo estado de pedido personalizado "En progreso ", pero puede usar cualquier nombre que desee simplemente personalizando el código.

 // Registrar nuevo estado
función registro_en_progreso_orden_estado() {
    register_post_status( 'wc-in-progress', array(
        'etiqueta' => 'En progreso',
        'público' => verdadero,
        'show_in_admin_status_list' => verdadero,
        'show_in_admin_all_list' => verdadero,
        'exclude_from_search' => falso,
        'label_count' => _n_noop( 'En curso (%s) ', 'En curso (%s) ' )
    ) );
}
// Agregar estado personalizado a la lista de estado del pedido
función add_in_progress_to_order_statuses ($ order_statuses) {
    $estados_nuevo_pedido = array();
    foreach ($order_statuses as $key => $status) {
        $new_order_statuses[ $key] = $status;
        if ('procesamiento-wc' === $clave) {
            $new_order_statuses['wc-in-progress'] = 'En progreso';
        }
    }
    devuelve $estados_nuevos_pedidos;
}
add_action('init', 'register_in_progress_order_status');
add_filter('wc_order_statuses', 'add_in_progress_to_order_statuses');



woocommerce-estado-del-pedido-personalizado

Otras formas de cambiar el estado del pedido de WooCommerce

Si está buscando formas alternativas de actualizar el estado del pedido predeterminado en WooCommerce, puede consultar algunos complementos. Desafortunadamente, no hay muchas herramientas gratuitas para esto, pero estas son algunas de las mejores:

  • YITH Custom Order Status : una excelente herramienta para administrar los estados de los pedidos y crear otros personalizados. Es una de las mejores herramientas del mercado pero no es barata. Te costará 79,99 € al año.
  • Administrador de estado de pedidos de WooCommerce : otro excelente complemento para agregar, eliminar y editar el estado de los pedidos. También puede activar correos electrónicos en función del estado de los pedidos. Cuesta 49 USD al año.
  • Estado del pedido personalizado para WooCommerce : una de las mejores herramientas para administrar el estado del pedido en WooCommerce. Es un complemento premium que comienza en 39 USD por año.
  • Estado de pedido personalizado de Ni WooCommerce : uno de los pocos complementos gratuitos confiables que le permiten administrar el estado de su pedido con facilidad.

Cómo ver el estado del pedido en tu tienda WooCommerce

La forma más fácil de ver el estado del pedido en su tienda es abrir su panel de control de WooCommerce e ir a Pedidos. Luego, abra cualquier pedido y, en la sección General , presione el menú desplegable Estado. Allí verás todos los pedidos de tu tienda.

Conclusión

En resumen, el estado del pedido es una etiqueta que representa el estado actual de un pedido. Aunque WooCommerce incluye ciertos estados predeterminados, personalizarlos puede ser una buena idea para aquellos que desean eliminar o agregar otros nuevos. También puede ser una solución interesante para empresas que necesitan una solución automatizada para la gestión del estado de sus pedidos.

En esta guía, hemos visto todos los estados de pedidos predeterminados y diferentes ejemplos para cambiar el estado de los pedidos automáticamente en WooCommerce. Estas son solo algunas ideas, pero hay mucho más que puedes hacer. Le recomendamos que tome estos scripts como base y experimente para personalizarlos para su tienda.

Para más información sobre cómo personalizar tu tienda, echa un vistazo a estos tutoriales:

  • Cómo aplicar cupones de WooCommerce automáticamente
  • Edite la página de agradecimiento de WooCommerce mediante programación
  • Cómo personalizar el formulario de registro de WooCommerce
  • 3 métodos para probar pedidos de WooCommerce
  • Cómo agregar filtros de productos WooCommerce AJAX

¿Has actualizado el estado del pedido en tu tienda? ¿Tuviste algún problema siguiendo esta guía? ¡Háganos saber en los comentarios a continuación!