Povoliť tovar len na osobný odber

Môj zákazník predával tabletovanú soľ na zmäkčenie vody, alebo niečo v tom duchu. Balík mal 25kg, stál 13€ a ak si zákazník objednal nad 100€, mal mať dopravu zadarmo. Čiže niekto si objednal 8ks produktu, čím vlastne išlo o 200 kg a sumu 104€. Môj zákazník však musel za dopravu zaplatiť vyše 50€, čo znamená, že brutálne prerábal. Riešením teda bolo nastaviť, že pokiaľ bude tento produkt (tabletovaná soľ) v košíku, tak bude možný len osobný odber pre danú objednávku. 

Môj super kamarát a parťák Lacko mi poslal snippet, ktorý toto rieši. Ale nebojte sa, on ho tiež niekde len ukradol 😀 

				
					add_filter( 'woocommerce_package_rates', 'local_pickup_only_for_specific_product', 10, 2 );

function local_pickup_only_for_specific_product( $rates, $package ) {
    $product_id = 123; // Replace 123 with the ID of the product you want to limit to local pickup only
    $local_pickup_found = false;
    $local_pickup_rate_id = '';

    foreach ( $package['contents'] as $item ) {
        if ( $item['product_id'] == $product_id ) {
            foreach ( $rates as $rate_id => $rate ) {
                if ( 'local_pickup' === $rate->method_id ) {
                    $local_pickup_found = true;
                    $local_pickup_rate_id = $rate_id;
                    break;
                }
            }
            if ( $local_pickup_found ) {
                $filtered_rates = array();
                $filtered_rates[ $local_pickup_rate_id ] = $rates[ $local_pickup_rate_id ];
                return $filtered_rates;
            }
        }
    }
    return $rates;
}
				
			

Podstatný je pre nás riadok č.4, v ktorom definujeme ID žiadaného produktu. 

A to je naozaj všetko.

Podobné články

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *