Medzi spôsoby dopravy často krát máme možnosť aj dopravu zadarmo, napr. po dosiahnutí určitej hodnoty objednávky. Woocommerce však v prípade splnenia podmienky pre dopravu zadarmo zobrazuje všetky dostupné spôsoby dopravy. Nasledujúcim krátkym kódom docielíme to, že v prípade ak zákaznik splní podmienku pre získanie dopravy zadarmo, automaticky sa bude zobrazovať iba táto možnosť, prípadne spolu s osobným odberom.
function pixeler_hide_shipping_when_free_is_available($rates, $package)
{
$new_rates = array();
foreach ($rates as $rate_id => $rate) {
// ulozenie sposobu dopravy zadarm
if ('free_shipping' === $rate->method_id) {
$new_rates[$rate_id] = $rate;
//break; // odkomentuj `break;` pre zobrazenie iba prveho sposobu dopravy zadarmo
}
}
if (!empty($new_rates)) {
//povolit okrem dopravy zadarmo aj osobný odber
foreach ($rates as $rate_id => $rate) {
if ('local_pickup' === $rate->method_id) {
$new_rates[$rate_id] = $rate;
break; // odkomentuj `break;` pre zobrazenie iba prvého sposobu dopravy osobny odber
}
}
return $new_rates;
}
return $rates;
}
add_filter('woocommerce_package_rates', 'pixeler_hide_shipping_when_free_is_available', 10, 2);