Voici la méthode pour offrir les frais de port sur votre boutique woocommerce à partir d'un certain poids.
Dans un premier temps il faut que vous rajoutiez un mode de livraison "Livraison gratuite". Pour cela, rendez-vous dans l'administration de Wordpress, rubrique "WooCommerce > Réglages > Expédition > Votre zone" puis "Ajouter une méthode de livraison > Livraison gratuite".
Il va falloir ensuite récupérer l'identifiant des modes de livraison. Pour cela, rendez-vous sur votre boutique, ajoutez un produit au panier et accédez à la page panier. Sur la page panier, dans le tableau "Total panier", faites un clic droit sur le bouton radio à gauche de l'intitulé de livraison (à droite du label "Expédition"), puis cliquez sur "Inspecter". Vous avez alors l'identifiant de chaque intitulé de livraison dans la valeur "value='...'" de chaque bouton radio. Exemple : flatrate:1 ou freeshipping:2.
Rajoutez ensuite dans votre fichier functions.php (présent dans votre thème) le code suivant en remplaçant les identifiants de livraison par les votres :
// frais de ports gratuits au dela de 4 produits
add_filter('woocommerce_package_rates', 'custom_flat_rate_cost_calculation', 10, 2 );
function custom_flat_rate_cost_calculation($rates, $package){
$products_weight = 0;
// Parcours des produits du panier pour récupérer le poids de chaque produit x sa quantité
foreach(WC()->cart->get_cart() as $cart_item){
if( $cart_item["variation_id"] > 0) {
$item_id = $cart_item["variation_id"];
}
else {
$item_id = $cart_item["product_id"];
}
// Récupération du poids du produit x sa quantité
$products_weight += $cart_item["quantity"] * get_post_meta( $item_id , "_weight", true);
}
// Si le poids total des produits est supérieur ou égal à 1Kg
if($products_weight >= 1) {
//__ On masque les frais de port payants
unset($rates['flat_rate:1']);
} else {
//__ On masque les frais de ports gratuits
unset($rates['free_shipping:2']);
}
return $rates;
}