Activarea livrării gratuite în WooCommerce pentru anumite produse
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ă?

Ș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.

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.

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

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;
}

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.

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.

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.

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.

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.
