<? add_filter('woocommerce_package_rates', 'product_hide_shipping_method', 10, 2); function product_hide_shipping_method( $rates, $package ){ if ( is_admin() && ! http://www.php.net/defined( 'DOING_AJAX' ) ) return $rates; $shipping_method_id = 'flat_rate:3'; $product_ids = http://www.php.net/array(111,122,133); $found = false; foreach( $package['contents'] as $cart_item ) { if( http://www.php.net/in_array( $cart_item['data']->get_id(), $product_ids ) ) $found = true; } if( $found ){ foreach ( $rates as $rate_key => $rate ){ if( $shipping_method_id === $rate->id ) http://www.php.net/unset($rates[$rate->id]); } } return $rates;
Najprościej powtórzyć kod od linii 8 do 24 z inną wartością $shipping_method_id oraz $product_ids.
Trudniej:
1. Zrobić tabelę asocjacyjną: [metoda_wysylki=>[id_produktow]],
2. Iteracyjne przejść po tablicy 1, a wewnątrz pętli po koszyku (linie 14 i 15),
3. Jeśli produkt w koszyku znajduje się w tabeli produktów (wartość z pętli 1), to:
4. Wykonać pętlę 20-23 używając klucza z pętli 1.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)