-
Notifications
You must be signed in to change notification settings - Fork 0
/
forceer-afhaal-bij-bepaalde-categorie
40 lines (30 loc) · 1.26 KB
/
forceer-afhaal-bij-bepaalde-categorie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
// filter 'woocommerce_package_rates' bepaald de shipping rates
add_filter( 'woocommerce_package_rates', 'hide_shipping_methods_for_category', 100, 2 );
function hide_shipping_methods_for_category( $rates, $package ){
// specifieer hier de bepaalde categorie
$product_category = 'koopjes';
$prod_cat = false;
// indien je meerdere product categorien wil tracen, zet dan een array op zoals:
// $product_category = array( 'clothing');
// we doorlopen hier alle producten in het winkelmandje en
// bekijken via has_term of een product van die bepaalde categorie aanwezig is
// indien zo dfan zetten we de variable $prod_cat op true
foreach ( WC()->cart->get_cart() as $cart_item ) {
$product_id = $cart_item['product_id'];
if ( has_term( $product_category, 'product_cat', $product_id ) ){
$prod_cat = true;
}
}
// indien $prod_cat op true is forceer dan enkel local_pickup als shipping optie
$rates_arr = array();
if ( $prod_cat ) {
foreach($rates as $rate_id => $rate) {
if ('local_pickup' === $rate->method_id) {
$rates_arr[ $rate_id ] = $rate;
}
}
}
return !empty( $rates_arr ) ? $rates_arr : $rates;
}
?>