Truc per actualitzar automàticament l’estat d’una comanda en WooCommerce a COMPLETAT.

Exceptuant la passarel·la de pagament de Paypal (si s’ha configurat correctament), totes les altres no actualitzen l’estat de la comanda a «Completat«, sinó que el deixen «Tot esperant» o ‘En procés «.

En aquest cas, el que busquem és que tot demanat rebut es consideri directament com una comanda completat. Bé sigui perquè treballes amb passarel·les de pagament instantànies -és a dir, el pagament es rep per avançat- o perquè simplement no vols preocupar-te de marcar manualment les comandes que ja s’hagin completat. (Una tasca una mica molesta si reps un nombre de comandes elevat)

Òbviament aquesta opció es pot configurar a través de connectors, però els que he trobat són connectors de pagament molt complets que inclouen multitud de funcions més i per al cas que ens ocupa, crec sincerament que no val la pena.

La solució que jo et proposo es basa en utilitzar un senzill codi snippet, estalviant-nos així afegir més càrrega de connectors a la botiga online. Si encara no estàs familiaritzat amb aquests codis i no estàs segur de com usar-los, et recomano que llegeixis abans aquest article en el qual et parlo de com fer-ho de forma correcta; Afegir codis snippet en WooCommerce de forma correcta.

// Actualitza automàticament l'estat de les comandes 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 les passarel·les de pagament a les quals 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' );
}

El codi anterior s’activa a la pàgina d’agraïment, quan el client ja ha finalitzat la compra i se li mostra tota la informació amb el resum de la seva comanda. En aquest moment, el codi anterior pren la identificació de la comanda i automàticament canvia el seu estat a «Completat« (“COMPLETADO” perquè el codi está en Español).

El codi anterior està configurat per aplicar el canvi d’estat a totes les comandes que s’hagin pagat usant qualsevol de les següents passarel·les de pagament:

  • Transferència Bancària Directa (ID = ‘bacs’)
  • Pagament mitjançant xecs (ID = ‘xec’)
  • Pagament en lliurament (ID = ‘cod’)
  • Paypal (ID = ‘paypal’)

Si vols treure o afegir nous mètodes de pagament a el codi anterior, simplement modifica la següent línia:


     $paymentMethods = array( 'bacs', 'cheque', 'cod', 'paypal' );

Per exemple, si vols afegir un nou mètode de pagament que estiguis usant en tu botiga, hauries de modificar el codi de la següent manera:


     $paymentMethods = array( 'bacs', 'cheque', 'cod', 'paypal', 'ID_nuevo_método_pago' );

On posa ID_nuevo_método_pago serà la identificació de la nova passarel·la de pagament.

Per saber quin ID correspon a cada passarel·la, simplement entra a «WooCommerce > Ajustes > Finalizar compra > Opciones de pago» i just a la fi de la pàgina veuràs totes les passarel·les habilitades i els seus IDs.

actualizar-estado-pedidos-woocommerce-segun-metodo-de-pago

En la versió actual és necessari entrar a configuració de cada un dels mètodes de pagament i fixar-se en l’última paraula després de l’igual (=) per saber l’identificador de cada passarel·la.

Amb això ja seria suficient per fer el canvi automàtic de l’estat de la comanda.

No obstant això, si deixem la configuració general de WooCommerce tal qual estan, quan un client realitzi la seva comanda, rebrà dos correus electrònics a el mateix temps; un dient que la seva comanda s’està processant i un altre avisant que la seva comanda s’ha completat.

Per anar bé notificar-li directament que la seva comanda està completat i no enviar-li el primer email per no crear confusió.

Com es fa això? Molt senzill.

Des del teu panell d’administració entra en «WooCommerce> Configuració> E-mails> En procés teva comanda» i desmarca la casella «Habilita«. Amb això aconseguiràs que no s’enviï el primer correu electrònic.

Com veus, la solució que t’he proposat per canviar l’estat de la comanda en WooCommerce de forma automàtica és ben senzilla i sense necessitat de plugins addicionals.

No cal dir, que si en algun moment vols tornar a modificar l’estat d’una comanda, ho podràs fer sense problema des del panell d’edició de la comanda.

Publicaciones relacionadas anterior y posterior

Skip to content