Cum să ascundeți metodele de expediere WooCommerce pentru anumite condiții

Publicat: 2020-06-15

Metoda de livrare este un serviciu și o taxă pe care un client le vede la finalizarea comenzii în timp ce cumpără orice articol. Va fi o opțiune esențială pentru un magazin de comerț electronic pentru o experiență de livrare fără probleme .

Ca soluție de comerț electronic, WooCommerce oferă, de asemenea, metode de livrare, cum ar fi Livrare gratuită , Tarif fix și Ridicare locală , care pot fi configurate pentru diferite zone de expediere în funcție de locații. De exemplu, opțiunea de livrare gratuită este disponibilă numai pentru o anumită gamă de coduri poștale care sunt aproape de locația magazinului, iar opțiunea Tarif fix este disponibilă pentru cealaltă parte a zonelor de livrare.

Default Shipping Methods
Metode de livrare implicite

Opțiunile de expediere bazate pe locație pot fi obținute cu ușurință prin plugin, dar pentru anumite condiții în care locația nu joacă un rol vital, devine foarte dificil pentru proprietarii de magazine să realizeze acest lucru. Conditiile ar putea fi:

  1. Anumite metode de expediere, cum ar fi transportul gratuit, nu ar trebui să fie disponibile dacă greutatea comenzii este mai mare de un anumit număr de lbs sau kg.
  2. Disponibilitatea unor metode de livrare se bazează și pe numărul de cantități sau prețul întregii comenzi. De exemplu, dacă totalul comenzii este mai mare de 250 USD, atunci ar trebui să fie disponibilă numai metoda de livrare gratuită și nu ar trebui să fie disponibile nicio metodă de livrare plătită.

Pot exista mai multe astfel de condiții pentru care metodele de expediere trebuie să fie afișate sau ascunse în timpul plății, dar în această postare vom explica cele de mai sus 2. Pentru a realiza acest lucru pentru magazinul dvs. WooCommerce, puteți adăuga un fragment de cod sau utilizați oricare dintre ratele de expediere. pluginuri disponibile.

Folosind un fragment de cod

Să luăm un exemplu de condiție 1, care este menționată mai sus, unde transportul gratuit nu ar trebui să fie disponibil dacă greutatea comenzii este mai mare de 5 kg. Puteți realiza acest lucru adăugând codul de mai jos în fișierul functions.php al temei active în prezent.

Notă: Aceste modificări pot fi suprascrise cu o actualizare a temei curente, de aceea este recomandat să creați o temă copil și să adăugați fragmentele de cod necesare în fișierul functions.php al temei copil. Sau puteți utiliza pluginul Code Snippets pentru a adăuga fragmente personalizate.

 /** 
 * Ascundeți transportul gratuit când greutatea comenzii este mai mare de 10 kg. 
 * 
 * @param array $rates Matrice de rate găsite pentru pachet. 
 * @return matrice 
 */ 
funcția ts_hide_free_shipping_for_order_weight( $rate, $pachet ) { 
    $greutate_comanda = WC()->cart->get_cart_contents_weight(); 
 
    dacă ( $greutate_comandă > 5 ) { 
        foreach( $rate ca $rate_id => $rate_val ) { 
            if ( 'livrare_gratuita' === $rate_val->get_method_id() ) { 
                unset( $rate[ $rate_id ] );
            } 
        } 
    } 
    returnare $ rate; 
} 

add_filter( 'woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2 );

Aici filtrul woocommerce_package_rates este folosit pentru a modifica tarifele calculate pe coș. Conține toate tarifele de livrare care vor fi disponibile odată ce produsul este adăugat în coș. Deci, trebuie să anulăm metoda de expediere necesară, care va fi Livrare gratuită în cazul nostru din matricea returnată de acest filtru dacă greutatea comenzii este mai mare de 5 kg.

Pagina produsului:

Product with 6kg weight
Produs cu o greutate de 6 kg

Pagina de coș cu metode de livrare:

Free shipping is not available for the product with weight more than 5kg
Livrarea gratuită nu este disponibilă pentru produsele cu o greutate mai mare de 5 kg

Un alt exemplu de ascundere a metodelor de expediere pe coșul WooCommerce ar fi să permită numai livrare gratuită în timpul comenzii, atunci când totalul comenzii este mai mare de 250 USD. Acest lucru poate fi realizat prin adăugarea codului de mai jos în fișierul functions.php.

 /**
 * Ascundeți tarifele de expediere când totalul comenzii este mai mare de 250 USD.
 *
 * @param array $rates Matrice de rate găsite pentru pachet.
 * @return matrice
 */
funcția ts_hide_shipping_for_order_total( $rate ) {
  $free = matrice();

  $total_comanda = WC()->cart->get_subtotal();
  
  if( $total_comanda > 250 ) {
    foreach ( $rate ca $rate_id => $rate ) {
      if ( 'livrare_gratuita' === $rate->get_method_id() ) {
        $free[ $rate_id ] = $rata;
      }
    }
  }
  întoarcere ! gol ($gratuit)? $gratuit : $rate;
}
add_filter( 'woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100 );

Aici, când totalul comenzii este mai mare de 250 USD, atunci se returnează din filtru o matrice cu numai metode de livrare gratuite, altfel toate tarifele de expediere sunt returnate.

Hide Shipping Rate when Order total is more than $250
Ascundeți rata de livrare când totalul comenzii este mai mare de 250 USD

În exemplele de mai sus, am luat referința metodei de livrare gratuită, deci id-ul metodei folosit este free_shipping. Pentru modificarea altor metode de expediere, ID-urile metodei sunt:

Preluare locală: local_pickup
Tarif fix: tarif_plan

Funcția get_method_id() preia id-ul metodei numai pentru cele 3 metode pentru toate zonele de expediere și nu pentru o metodă individuală a unei singure zone de expediere, astfel încât va ascunde toate tarifele fixe, metodele de ridicare locală sau de livrare gratuită disponibile în timpul plății. Dar dacă doriți să ascundeți o anumită metodă de expediere, atunci trebuie să utilizați combinația dintre id-ul metodei de expediere și id-ul instanței.

De exemplu, „flat_rate:3” unde 3 este ID-ul de instanță unic stocat pentru fiecare metodă de expediere pentru o zonă din baza de date. Puteți găsi ID-ul de instanță al metodei de expediere făcând clic dreapta pe metoda de expediere și inspectați elementul în instrumentul de dezvoltare din browser.

Instance ID

Utilizarea diferitelor extensii WooCommerce pentru metodele de expediere

Există mai multe extensii plătite sau gratuite disponibile pentru a configura metode de expediere pentru diferite condiții. Unele dintre pluginurile cele mai utilizate sunt:

Pluginuri plătite:

  1. Tabelul de livrare de către WooCommerce : Acest plugin extinde opțiunile de livrare implicite ale WooCommerce, oferindu-vă opțiuni de livrare extrem de personalizabile.
  2. Plugin avansat de livrare cu tarif fix pentru WooCommerce : Acest plugin vă va ajuta să configurați tarifele de livrare în magazinul dvs. pe baza regulilor avansate de livrare.
  3. Plugin WooCommerce Advance Shipping de Jeroen Sormani : Acest plugin vă permite să activați metodele de livrare în timpul comenzii pe baza unor reguli stabilite. Pot fi setate reguli pentru diferite detalii despre coș, detalii despre produse sau diferite detalii despre utilizator .
  4. Flexible Shipping Pro for WooCommerce by WP Desk : Acest plugin vă permite să activați metoda de expediere în funcție de un anumit articol, articol din coș, preț sau reguli de greutate .

Pluginuri gratuite:

Unele dintre pluginurile de mai sus au și o versiune gratuită pentru ele, cu funcții limitate. Sunt:

  1. WooCommerce Advanced Free Shipping de Jeroen Sormani: Aceasta este o versiune gratuită a pluginului WooCommerce Advanced Shipping. Singura diferență cu ambele plugin-uri este că acest plugin permite numai metoda de livrare gratuită pentru regulile stabilite, iar pluginul plătit permite toate metodele de expediere.
  2. Livrare flexibilă pentru WooCommerce de la WP Desk : Aceasta este o versiune gratuită a pluginului Flexible Shipping Pro pentru WooCommerce. Permite setarea metodelor de expediere doar pentru preț și greutate.

Pentru o explicație detaliată a pluginurilor menționate mai sus puteți verifica această postare.

Concluzie

După cum am văzut în această postare, că opțiunile de livrare în avans pot fi obținute prin simpla adăugare a unui fragment de cod pe site-ul dvs. sau prin utilizarea diferitelor plugin-uri disponibile. Deci, puteți încerca fragmentul de cod dat sau puteți experimenta cu oricare dintre pluginuri și să ne spuneți dacă acest lucru este benefic pentru magazinul dvs. WooCommerce.