La balance

Sur certaines boutique en ligne, il peut-être intéressant d’empêcher vos clients de réaliser une commande, si le prix total de celle-ci est inférieur à un montant défini.

Sur votre e-Commerce fonctionnant avec l’extension WooCommerce, vous pouvez exiger un montant minimum lors du passage d’une commande. Très pratique lorsque vous avez des frais de gestion particulier, et qu’il est nécessaire pour vous de rester rentable.

Voici la méthode pour mettre en place une telle fonctionnalité.

Étape 1 – Modifier le fichier functions.php

Copiez le code ci-dessous, et collez-le dans le fichier functions.php de votre thème courant :

add_action('woocommerce_before_checkout_process','mgris_minimum_order');

function mgris_minimum_order() {
	global $woocommerce;
	// Modifier la variable $minorder par votre montant minimum.
	$minorder = 9.50;
	$panier = $woocommerce->cart->subtotal;

	if($panier<$minorder) {
		$woocommerce->add_error( sprintf(__('Désolé, pour pouvoir réaliser une commande en ligne, le montant de votre panier doit être supérieur à <strong>' . $minorder . '</strong> €. <br /><a href="%s">Retour à la boutique →</a><br />', 'textdomain'), get_permalink( woocommerce_get_page_id('shop') ) ) );
	}
}

Étape 2 – Modifier le montant minimum

A la ligne 6 de ce code, modifier la variable $minorder par le montant minimum souhaité. Dans mon cas, le montant est fixé à 9.50 €

Résultat

Désormais, il est impossible pour vos clients de passer une commande si le montant de celle-ci est inférieur au montant défini dans le code. Un message d’erreur apparaît juste avant le moment du paiement.

Crédits photo : DeGust

23 commentaires

  1. Pas mal comme fonction surtout quand on offre les frais de port.

    Merci pour l’astuce comme d’habitude je garde dans les bacs.

    (Ps je suis une agence de biarritz, il me semble que tu est du pays basque non ?)

  2. Salut, et merci pour ton retour d’expérience .
    Exactement, c’est un exemple de cas où cette méthode peut-être utile !

    Et sinon, oui, je suis au Pays basque.

  3. Bonjour, extra comme tuto, merci.
    Et pour empêcher la commande sur la base d’un nombre minimal de produits commandés (et non pas d’un montant minimum) ? C’est possible ? Merci.

    1. Après essai, ça fonctionne nickel… sauf que lorsque j’ai mis à jour mon panier avec un nombre minimal de produits, le message d’erreur apparaît encore. Il doit falloir faire une sorte de « reset » quelque part ? Voici mon code :

      add_action(‘woocommerce_before_checkout_process’,’jsam_minimum_order_by_quantity’);

      function jsam_minimum_order_by_quantity() {
      global $woocommerce;
      // Modifier la variable $minorder par votre montant minimum.
      $minorder = 12;
      $panier = floatval($_SESSION['get_cart_contents_count']);

      if($panieradd_error( sprintf(__(‘Désolé, pour pouvoir réaliser une commande en ligne, le nombre de bouteilles doit être au moins égal à

      à ‘ . $minorder . ‘ Retour à la boutique →‘, ‘textdomain’), get_permalink( woocommerce_get_page_id

      (‘shop’) ) ) );
      }
      }

      1. Bonjour Jean-Sam,

        Exactement, je pense qu’avec la variable de session tu dois pouvoir remonter cette information.

        Enfin pour te répondre, tu as supprimé la ligne du if($panier<$minorder)… et du coup ton message d'erreur sera toujours affiché, quoi qu'il arrive.

        Il faut la remettre et ça devrait fonctionner à nouveau !

        1. Merci de ta réponse, en fait le copier/coller n’a pas fonctionné et mon fichier comporte bien la ligne if($panier<$minorder…) etc.
          Afin de ne pas polluer la timeline avec mes demandes d'infos, m'autorises-tu à entrer en contact direct avec toi par mail ?
          Je dois me "sortir de cette problématique" et tu as manifestement les compétences professionnelles pour.
          A te lire, cordialement.

  4. Bonsoir,
    je débute la création d’une petite boutique en ligne. J’utilise woocommerce avec un thème de chez Kiesi.
    Une question : je voudrais pouvoir augmenter de 1 ou 2 euros à chaque produit ajouter au panier, au delà de 3 articles.
    Je m’explique, les frais de livraison globaux sont de 8,50€ (ce qui est très raisonnable), si, par exemple, qq’un prend une paire de chaussures, un manteau, une chemise, un pull, une bonnet etc. les 8,50€ seront largement dépassés… comme je vends des vêtements de seconde main de luxe et que mes prix sont bas je ne m’y retrouverai pas. Comment faire une classe de livraison spéciale.
    d’avance merci pour votre/vos réponses.

    1. Salut Clo,

      Je pense qu’on s’éloigne du sujet de base. Il faudrait, je pense, que tu utilises les classes de livraisons de WooCommerce en fonction de la catégorie de tes produits pour pouvoir gérer ces frais de livraison au mieux.

      Tu trouveras l’option dans Produits > Classes de livraison

      Ensuite, tu peux aller dans WooCommerce > Paramètres et dans l’onglet « Livraison ». Enfin, dans le sous-onglet tu choisis « Taux Fixe ».

      Dans cette dernière page, tu trouveras certainement des éléments de réponses. Je pense qu’il est possible d’ajouter des frais de livraison particulier sur chaque article, sur la globalité de la commande ou encore, par classe de livraison.

      Bon courage.

  5. Bonjour, J’avoue que je n’y comprend plus rien !
    Cette méthode fonctionnait à merveille.
    Depuis quelques jours : j’ai beau mettre 30 000 € dans le panier, avec « $minorder = 300.00; » la commande est bloquée et la phrase s’affiche quel que soit le montant du panier …

    1. Je pensais que ce problème venait du thème … mais même problème sur le thème de base « Twenty Twelve » …

    2. Bonjour, et merci pour ton retour.

      Effectivement, depuis les dernières mises à jour, le code ne fonctionne plus correctement. Je viens d’y apporter un correctif !
      Il suffit de modifier la ligne 7 du code (le contenu de la variable $panier), par le code suivant : $woocommerce->cart->subtotal pour régler le soucis !

      L’article a été mis à jour en conséquence

  6. Bonjour,
    merci pour ce tuto, je voulais savoir si y a moyen de faire bloquer les commande au dessus d’un montant.
    je m’explique par exemple bloquer les commandes de plus de 1500€ et rediriger les clients à contacter ou passer par une autre méthode de commande que la commande en ligne (soucis de livraisons des objets de valeurs de plus de 1500€).

    Merci d’avance.

  7. Bonjour,

    Merci pour ton retour .

    A priori oui tu peux faire la même chose pour bloquer les commandes qui auraient un montant supérieur à un nombre défini.
    Il faut juste un peu adapter le code de ce tutoriel en modifiant la conditions dans le if().
    Je pense même qu’il doit être possible de faire une redirection vers une page explicative lorsque le montant est trop important.

    Bon courage !