SmythSys IT Consulting

Marcar pedidos como Completados automáticamente en WooCommerce

Por defecto, cuando se realiza un pago de un pedido en WooCommerce este no aparece como completado sino como En Espera o “Procesando“.  Hoy te enseñamos a poner los pedidos como Completados automáticamente, una vez se hayan pagado.

Cómo marcar los pedidos como Completados automáticamente en WooCommerce.

WooCommerce considera que, tras el pago de un pedido, se debe realizar un proceso previo antes finalizarlo. Por ejemplo empaquetarlo o enviado. Por lo tanto, cuando un cliente realiza el pago, el estado pasa a Procesando y es el dueño de la tienda el que tiene que cambiarlo al siguiente estado.

Sólo en los casos en los que el producto sea virtual y descargable (ambas opciones a la vez), WooCommerce completa los pedidos.

Pero claro, esto puede no ser muy deseable para muchas tiendas online. Aquellas que tengan productos virtuales, las que sean aulas online y muchas otras, pueden querer que el pedido se procese tras el pago y el cliente tenga directamente acceso a lo que ha pagado. Sin tener que esperar a que el dueño de la tienda se lo apruebe.

Os dejamos dos maneras de hacerlo:

  • Con plugins. Tienes un plugin de pago, Order Status Control, pero también tienes alguno gratuito como Autocomplete WooCommerce Orders. Nosotros hemos probado este último y va genial. Puedes poner que se autocompleten los productos virtuales, o cualquier producto que se pague (nosotros probamos esta opción), o todos los productos independientemente de su pago (no recomendable).
  • Con código. De nuevo puedes ponerlo en el functions.php de tu plantilla hija o en un plugin como Code Snippets.
    Los códigos te permiten más personalización como elegir el método de pago o el estado final. He encontrado varios y os los dejo para probar.

    WooCommerce propone este:

    /**
    * Auto Complete all WooCommerce orders.
    */
    add_action( ‘woocommerce_thankyou’, ‘custom_woocommerce_auto_complete_order’ );
    function custom_woocommerce_auto_complete_order( $order_id ) {
    if ( ! $order_id ) {
    return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( ‘completed’ );
    }

    /**
    * Auto Complete all WooCommerce orders.
    */
    add_action( ‘woocommerce_thankyou’, ‘custom_woocommerce_auto_complete_order’ );
    function custom_woocommerce_auto_complete_order( $order_id ) {
    if ( ! $order_id ) {
    return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( ‘completed’ );
    }

    Aquí podéis ver este donde podéis elegir el método de pago.

    // Actualiza automáticamente el estado de los pedidos a COMPLETADO
    add_action( 'woocommerce_order_status_processing', 'actualiza_estado_pedidos_a_completado' );
    add_action( 'woocommerce_order_status_on-hold', 'actualiza_estado_pedidos_a_completado' );
    function actualiza_estado_pedidos_a_completado( $order_id ) {
        global $woocommerce;
        
        //ID's de las pasarelas de pago a las que afecta
        $paymentMethods = array( 'bacs', 'cheque', 'cod', 'paypal' );
        
        if ( !$order_id ) return;
        $order = new WC_Order( $order_id );
    
        if ( !in_array( $order->payment_method, $paymentMethods ) ) return;
        $order->update_status( 'completed' );
    }

    Y este otro artículo da varias opciones.

Los estados de los pedidos por defecto los puedes ver entrando en un pedido y pinchando en el desplegable de estados o en la configuración de WooCommerce en los Emails. Pero son:

 

  • Cancelado (Cancelled).
  • Fallido (Failed).
  • Completo (Completed).
  • Pendiente  (Pending payment).
  • Procesando (Processing).
  • En espera (On hold).
  • Reembolsado (Refunded)

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).