Activarea livrării gratuite în WooCommerce pentru anumite produse

14 mar. 2013, 15:15:18
Vizualizări: 24.1K
Voturi: 9

Aș dori să știu dacă este posibil să activez livrarea gratuită în WooCommerce doar dacă anumite produse (sau produse din anumite categorii / clase de livrare) sunt incluse în coș.

Opțiunea de Livrare Gratuită se activează doar pe baza valorii coșului sau prin intermediul unui cod de cupon, așa că am investigat livrarea cu Rată Fixă și am descoperit că aceasta prioritizează clasa de livrare cea mai scumpă în detrimentul celor mai ieftine. Acest lucru înseamnă că clasa de livrare gratuită pe care am creat-o nu suprascrie niciodată taxa implicită.

Înțeleg logica din spatele acestui comportament, dar este opusul a ceea ce am nevoie, deoarece ideea este de a încuraja achizițiile de produse cu marjă de profit mai mare prin eliminarea taxelor de livrare atunci când acestea sunt incluse într-o comandă.

Nu știu dacă ceea ce încerc să realizez nu este pur și simplu posibil în WooCommerce. Un cupon care se aplică doar anumitor produse / categorii pare să fie cel mai apropiat lucru pe care îl pot obține, dar aș prefera să nu forțez utilizatorii să introducă un cod la finalizarea comenzii.

Știe cineva dacă există modalități mai simple de a oferi utilizatorilor care cumpără anumite produse livrare gratuită?

3
Comentarii

Cum naiba a fost închisă ca „off-topic” această întrebare legată de un plugin WordPress, care a primit 8 voturi pozitive și a fost marcată drept favorită de 3 ori de către dezvoltatori WordPress O.o

Ben Ben
23 apr. 2015 07:18:42

@Ben pentru că este un plugin WooCommerce și nu o întrebare specifică WordPress (așa cum este menționat în centrul de ajutor)

Alexander Holsgrove Alexander Holsgrove
31 oct. 2019 12:54:11

Această întrebare este locul unde am ajuns când încercam să caut soluția la această problemă. Așadar, aș dori să împărtășesc un link mai recent pentru vizitatori. Acesta provine din documentația oficială WooCommerce și nu are 7 ani. Acest răspuns oferă o soluție prin intermediul unui snippet adăugat în functions.php https://woocommerce.com/document/hide-other-shipping-methods-when-free-shipping-is-available/

Peter Højlund Andersen Peter Højlund Andersen
16 dec. 2021 14:06:56
Toate răspunsurile la întrebare 6
4

Știe cineva dacă există modalități mai simple de a oferi clienților care cumpără anumite produse transport gratuit?

De fapt, atunci când creezi un produs, poți pur și simplu să îl marchezi ca produs Virtual direct în editorul de produse, iar asta va exclude complet transportul pentru acel articol.

9 mai 2013 19:06:00
Comentarii

Aceasta funcționează pentru produse simple, dar nu și pentru alte tipuri de produse – variabile, de exemplu. Totuși, încercare plăcută. Probabil că va funcționa pentru unii utilizatori.

Alexander Lee Williams Alexander Lee Williams
6 sept. 2013 23:45:47

De ce nu funcționează pentru produsele variabile? Poți marca fiecare variație ca virtual.

BFTrick BFTrick
17 sept. 2013 22:37:42

Sunt de acord @BFTrick

Nathan Nathan
18 sept. 2013 21:09:28

Acest lucru este de asemenea rău pentru că sistemul nu va accesa adresa de LIVRARE a clientului, care este destul de importantă ;)

Kane Kane
14 apr. 2015 01:37:08
0

Iată un fragment de cod colectat din câteva Gists dintr-o discuție pe GitHub legată de un răspuns dat de @Ewout. Am adăugat un var_dump(), astfel încât să puteți decomenta și verifica exact ce doriți să eliminați.

$available_methods este un array de tipul:

$available_methods as $method_id => $method

Comparați cu $method_id dacă aveți nevoie de verificări mai specifice.

// Ascunde opțiunea standard de transport când transportul gratuit este disponibil
add_filter( 'woocommerce_available_shipping_methods', 'wpse90835_hide_standard_shipping_when_free_is_available' );
/**
 * Ascunde opțiunea Standard Shipping când transportul gratuit este disponibil
 * 
 * @param array $available_methods
 */
function wpse90835_hide_standard_shipping_when_free_is_available( $available_methods )
{
    // Dezvoltatori!: Folosiți acest dump pentru a vedea ce puteți elimina
    # var_dump( $available_methods );

    // elimină opțiunea standard de transport
    if ( 
        isset( $available_methods['free_shipping'] ) 
        AND isset( $available_methods['flat_rate'] )
    )
        unset( $available_methods['flat_rate'] );


    return $available_methods;
}
6 sept. 2013 23:58:27
0

Am creat un plugin WooCommerce care permite utilizatorilor să configureze setări avansate pentru transportul gratuit. În cadrul pluginului, este posibil să selectezi anumite produse pentru livrare gratuită.

Poți găsi pluginul gratuit pe wordpress.org sub numele WooCommerce Advanced Free Shipping.

Sper că acest lucru este util.

4 mai 2014 18:47:35
2

Poate acest lucru nu răspunde complet la întrebarea ta, dar plugin-ul de livrare bazat pe tabel oferă opțiunea de a seta o prioritate pentru o anumită rată. În plus, această discuție oferă multe indicii despre unde ai putea căuta soluții.

15 mar. 2013 10:36:05
Comentarii

Mulțumesc. Privind documentația pentru Table Rate Shipping, se pare că face exact ce am nevoie. Dacă angajatorul meu va aproba licența, voi reveni cu o actualizare dacă este util.

James O'Neill James O'Neill
15 mar. 2013 13:00:04

Te rog să nu postezi linkuri către resurse externe. Mai degrabă adaugă-le aici și folosește linkul deasupra lor. Dacă linkul dispare, răspunsul devine inutil și ne luptăm din greu să prevenim deteriorarea linkurilor. -1

kaiser kaiser
6 sept. 2013 23:48:56
0

Pe baza codului lui kaiser (de mai sus), am creat următorul cod:

    /**
 *  Ascunde opțiunea de livrare gratuită când livrarea standard este disponibilă
 * 
 * @param array $available_methods
 */
function mwe_hide_free_shipping_when_standard_shipping_is_available($available_methods) {

    // elimină opțiunea de livrare standard
    if (isset($available_methods['free_shipping']) AND isset( $available_methods['flat_rate'])) {
        unset($available_methods['free_shipping']);
    }

    return $available_methods;
}
add_filter('woocommerce_available_shipping_methods', 'mwe_hide_free_shipping_when_standard_shipping_is_available');

În ceea ce privește configurarea WooCommerce, am activat atât Livrarea gratuită cât și Tarif fix în Opțiunile de livrare Woo. Apoi am setat o clasă de livrare, am specificat costul acesteia (de ex. £7.95) în pagina de opțiuni Tarif fix și am adăugat acea clasă de livrare la produsele pentru care vreau să taxez £7.95 pentru ambalare și livrare.

11 ian. 2014 15:16:09
0

Opțiunea "virtual" va elimina toate costurile de livrare, dar va șterge și opțiunea de a livra la o adresă diferită de cea de facturare a clientului. Acest lucru nu reprezintă o problemă dacă clientul cumpără și alte produse care nu sunt virtuale, dar este o problemă dacă acesta cumpără doar produse virtuale.

7 mai 2014 21:44:00