Comment personnaliser les méthodes de livraison sur WooCommerce : astuces et exemples pratiques
Dans le monde du e-commerce, la livraison est un élément central et il est important de proposer des options adaptées aux besoins de chaque client. Pour répondre à ce besoin, WooCommerce offre de nombreuses possibilités de configuration des méthodes de livraison et des frais associés, mais certaines configurations plus complexes nécessitent l’utilisation de hooks et de fonctions personnalisées. Dans cet article, nous allons voir comment configurer les méthodes de livraison en fonction des quantités de produits et comment n’afficher que les options appropriées pour chaque panier.
Configuration des méthodes de livraison dans le back-office
WooCommerce offre nativement la possibilité de configurer des méthodes de livraison pour chaque zone géographique, mais ne propose pas d’options pour sélectionner une méthode de livraison en fonction de la quantité de produits dans le panier. Nous allons donc voir comment configurer ces options.
Imaginons que vous souhaitez proposer les options suivantes :
- Offrir les frais de port pour toute commande de plus de 100 €
- Proposer un forfait à 15 € pour toute commande de moins de 5 articles
- Proposer un tarif de 2 € par article pour toute commande de 5 à 10 articles
- Proposer un tarif de 1 € par article pour toute commande de plus de 10 articles
Pour configurer ces options, vous devez vous rendre dans le back-office de WooCommerce et accéder aux réglages de livraison (WooCommerce > réglages > Expédition > Zone d’expédition). Créez une zone d’expédition pour la zone géographique que vous souhaitez couvrir (par exemple, toute la France) et assignez-y les quatre méthodes de livraison.
- Pour l’option de frais de port offerts, choisissez la méthode de « Livraison gratuite » et définissez un montant minimum de 100 €.
- Pour l’option de forfait à 15 € pour les commandes de moins de 5 articles, choisissez l’option « Forfait » et fixez le montant à 15 €.
- Pour l’option de tarif de 2 € par article pour les commandes de 5 à 10 articles, choisissez l’option « Forfait » et fixez le montant à 2 € par article.
- Pour l’option de tarif de 1 € par article pour les commandes de plus de 10 articles, choisissez l’option « Forfait » et fixez le montant à 1 € par article.
Maintenant que les méthodes de livraison sont paramétrées, WooCommerce affichera toutes ces options pour chaque commande. Cependant, si vous souhaitez n’afficher que les options appropriées pour chaque panier, vous devez utiliser des hooks et des fonctions personnalisées.
Afficher seulement les frais de port gratuit lorsque la condition est remplie
Lorsqu’un client peut bénéficier de la livraison gratuite, il est inutile de lui montrer les autres options de livraison. Pour cela, vous pouvez utiliser le hook woocommerce_package_rates
, qui permet de boucler sur les différentes méthodes de livraison proposées et de ne conserver que l’option gratuite si elle existe.
Voici un exemple de fonction que vous pouvez utiliser pour masquer les méthodes de livraison payantes lorsque la livraison gratuite est disponible :
Cette fonction utilise le filtre woocommerce_package_rates
pour masquer les méthodes de livraison payantes si la livraison gratuite est disponible dans le panier. Elle vérifie d’abord si une méthode de livraison gratuite est présente dans le panier en parcourant les taux de livraison dans $package['shipping_rates']
. Si une méthode de livraison gratuite est trouvée, la variable $has_free_shipping
est définie sur true
.
Ensuite, si $has_free_shipping
est true
, la fonction parcourt à nouveau les taux de livraison dans $rates
et supprime tous les taux de livraison dont le coût est supérieur à zéro à l’aide de la fonction unset()
.
Enfin, la fonction retourne les taux de livraison mis à jour.
Vous pouvez personnaliser cette fonction en fonction de vos besoins en changeant les identifiants de méthode de livraison (free_shipping
et flat_rate
, par exemple) ou en ajustant les conditions pour masquer les méthodes de livraison payantes.
Afficher seulement la méthode de livraison qui correspond au panier du client
Maintenant que nous avons vu comment masquer les méthodes de livraison payantes lorsque la livraison gratuite est disponible, nous pouvons aller plus loin et n’afficher que la méthode de livraison qui correspond au panier du client.
Pour ce faire, nous allons utiliser à nouveau le hook woocommerce_package_rates
, mais cette fois, nous allons supprimer les options que nous ne voulons pas afficher en fonction de la quantité de produits dans le panier du client.
Supposons que vous souhaitiez afficher votre forfait de livraison à 15 € lorsque le client a moins de 5 articles dans son panier, les options de livraison standard entre 5 et 9 articles, et la livraison express pour les paniers de 10 articles ou plus. Nous allons commencer par identifier l’identifiant de chaque méthode de livraison. Vous pouvez trouver l’identifiant en passant votre souris sur le lien pour modifier la méthode de livraison dans le back-office de WooCommerce. L’identifiant sera affiché à la fin de l’URL.
Voici un exemple de fonction que vous pouvez utiliser pour n’afficher que la méthode de livraison appropriée en fonction de la quantité de produits dans le panier du client :
Dans cet exemple, nous avons défini $only
comme un tableau contenant l’identifiant de la méthode de livraison que nous souhaitons afficher pour chaque plage de quantités de produits. Nous avons ensuite parcouru toutes les méthodes de livraison et ajouté uniquement la méthode de livraison appropriée à la variable $new_rates
.
Notez que vous pouvez créer des conditions beaucoup plus complexes pour afficher différentes méthodes de livraison en fonction de différents paramètres tels que la zone de livraison, le poids du colis, le mode de paiement, etc.
Il est également possible de créer une page de paramétrage dans le back-office de WooCommerce pour permettre aux administrateurs de modifier les identifiants de méthodes de livraison plus facilement.
Si cet article vous a aidé, si vous avez des questions ou des améliorations à proposer, n'hésitez pas à me laisser un commentaire en bas de page !
Bonjour,
Merci pour l’astuce, mais le code vous le placer sur qu’elle page exactement ?
Bonjour.
OIu placer ce code ?
Le fichier exact please
Bonjour,
Le code est à ajouter dans le fichier functions.php de votre thème.
Veillez à créer un thème enfant si ce n’est pas déja le cas.
Bonne journée !
Hello,
Est-ce que ton code fonctionne encore avec le passage en version WP 5.0?
Chez moi, ça ne veut pas. ça me met « options de livraison introuvables »
J’ai mis ce code là:
function my_hide_shipping_when_inadapted( $rates ) {
global $woocommerce;
$quantites = $woocommerce->cart->get_cart_item_quantities();
$quantites = array_sum( $quantites );
if ( $quantites $rate ) {
if ( in_array( $rate->instance_id, $only ) ) {
$new_rates[ $rate_id ] = $rate;
break;
}
}
return ! empty( $new_rates ) ? $new_rates : $rates;
}
add_filter( ‘woocommerce_package_rates’, ‘my_hide_shipping_when_inadapted’, 100 );