Définir un montant minimum pour activer la livraison locale de WooCommerce

Définir un montant minimum pour activer la livraison locale de WooCommerce

Le dernier article sur WordPress commence à remonter. Pourtant, je ne l’utilise pas moins dans mon travail, bien au contraire.

Il y a peu, dans la mise en place d’un site e-commerce avec WooCommerce, j’ai eu besoin d’ajouter une fonctionnalité à la livraison : pouvoir activer la livraison locale seulement si un montant minimum est atteint.

Livraison locale ?

En activant la livraison locale de WooCommerce, les clients du site peuvent demander la livraison directement chez eux, par les livreurs de la boutique par exemple, si le code postal correspond bien sûr.

Avec la version actuelle de WooCommerce, un détail ne m’arrange pas : la livraison locale est gratuite quelque soit le montant de la commande. J’avais besoin de définir un seuil minimum pour permettre que cette option soit disponible.

Le principe du montant minimum

Dans mon cas, le montant minimum pour faire bénéficier les clients de la livraison locale est le même que celui permettant de bénéficier de la livraison gratuite.

Ainsi, pas besoin de nouveau champ de configuration.

La solution

Il suffit d’utiliser le filtre permettant de définir si la livraison locale est activée : woocommerce_shipping_local_delivery_is_available , en ajoutant cette fonction dans le thème enfant ou dans une extension maison :

<?php
/**
 * Disable local delivery when a minimum amount is not reached.
 * The minimum amount is the free shipping one.
 */
function setMinimumAmountForLocalDelivery($isAvailable) {
	// get cart amount :
	if (WC()->cart->prices_include_tax) {
		$cartAmount = WC()->cart->cart_contents_total + array_sum(WC()->cart->taxes);
	} else {
		$cartAmount = WC()->cart->cart_contents_total;
	}

	// get free shipping amount :
	$freeShippingSettings = get_option("woocommerce_free_shipping_settings");
	$freeShippingMinimumAmount = $freeShippingSettings["min_amount"];

	// disable local delivery when required
	if ($cartAmount < $freeShippingMinimumAmount)  return false;

	return $isAvailable;
}
add_filter("woocommerce_shipping_local_delivery_is_available", "setMinimumAmountForLocalDelivery", 20);
?>

Quelques explications :

  • on récupère le montant du panier en ajoutant celui des taxes selon la configuration
  • on récupère le montant minimum pour bénéficier de la livraison gratuite
  • les deux montants sont comparés, la livraison locale est désactivée si le montant du panier est inférieur au montant minimum. Dans ce cas on retourne false

Le mot de la fin

Cette solution est simple car elle utilise un paramètre existant, mais vous pouvez toujours ajouter une option de configuration pour définir un montant minimum spécifique à la livraison locale.

Sinon, toujours côté WordPress, j’ai publié ma première extension : WP atomic content. Elle permet de définir du contenu qui pourra être utiliser sur d’autres pages ou articles grâce à un shortcode.
J’écrirai certainement un article sur le sujet une fois que j’aurai ajouté quelques fonctionnalités.

L'illustration de cet article est une image sous licence CC BY-SA 4.0 par Kwangmo

Cet article vous a été utile ? Partage it !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Si vous le souhaitez, renseignez le champ 'Nom' de cette façon : 'VotreNom@VotreMotClef' pour obtenir une ancre optimisée pour les moteurs de recherche.