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 :
É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.
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 ?)
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.
Hello
Petite modif :
home_url( ‘/boutique/’ );
merci, c’est important car on peut hooker le contenu, là, on ne peut pas … 😉
Salut Julio,
Merci pour ton retour, je viens de faire la correction 🙂 !
Attention pour le lien de retour à la boutique il faut utiliser : get_permalink( woocommerce_get_page_id( ‘shop’ ) )
Bonjour Dominique,
Merci beaucoup pour cette précision, c’est top ! Je viens de faire la correction.
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.
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’) ) ) );
}
}
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 🙂 !
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.
Merci pour l’astuce comme d’habitude je garde dans les bacs.
merci pour ton excellent article,bon continuation
Merci pour l’astuce comme d’habitude je garde dans les bacs.
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.
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.
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 …
Je pensais que ce problème venait du thème … mais même problème sur le thème de base “Twenty Twelve” …
Ça vient pas des extensions, toutes désactivées à part WooCommerce Version 2.0.20
Rien à faire, il doit y avoir qq chose qui a été modifié dans la dernière mise à jour de WooCommerce 2.0.20 ? Rencontrez-vous de votre côté le même problème ?
http://jus2pom.com/ftp/woo-bug.png
Problème résolu !
Je viens d’installer un plug-in qui fonctionne très bien :
http://wordpress.org/plugins/minimum-purchase-for-woocommerce/
Pour la traduction, ça se passe dans 2 fichiers :
core/vtmin-apply-rules.php
woo-integration/vtmin-parent-cart-validation.php
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
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.
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 !
Bonjour,
Très bon code. Fonctionne très bien.
Cependant, je ne sais pas si cela vient de mon template, mais depuis la dernière mise à jour, la partie if ne fonctionne plus.
Si le client met un montant supérieur ou égal au montant défini, tout fonctionne, mais si il met moins, alors la page fait mine de charger (comme si allait fonctionner) mais rien ne se passe et le message d’erreur ne s’affiche pas.
Avez-vous eu d’autres retour comme celui-ci ?
Cordialement.
Le code n’est plus à jour, voir sur la doc woothemes : https://docs.woothemes.com/document/minimum-order-amount/
Avec la mise jour de woocommerce il faut utiliser cette fonction :
add_action( ‘woocommerce_checkout_process’, ‘wc_minimum_order_amount’ );
add_action( ‘woocommerce_before_cart’ , ‘wc_minimum_order_amount’ );
function wc_minimum_order_amount() {
// Set this variable to specify a minimum order value
$minimum = 280;
if ( WC()->cart->total cart->total )
), ‘error’
);
} else {
wc_add_notice(
sprintf( ‘Désolé, pour pouvoir réaliser une commande en ligne, le montant de votre panier doit être supérieur à %s Votre total actuel est %s.’ ,
wc_price( $minimum ),
wc_price( WC()->cart->total )
), ‘error’
);
}
}
}
Bonjour à tous,
C’est en cherchant une solution pour imposer un minimum de quantités des produits d’un webshop que je tombe sur votre article. Avez vous une idée de comment mettre cela en place avec WC, WP … et sans plugin?
Un grd merci d’avance de vos conseils.
Excellente journée.
Bonjour,
Oui tu peux adapter le code sans problème. Actuellement $panier récupère le montant du panier. Il faut juste que tu adaptes la variable $panier pour lui dire de récupérer le nombre d’articles dans ton panier.
Tu peux le faire en faisant $panier = sizeof(WC()->cart->get_cart());
Il te suffit ensuite de changer $minorder par le nombre d’article minimum nécessaire pour autoriser ta commande.
Bonne journée 🙂
Bonjour,
Super code qui marche bien !
Je suis débutant sur wordpress/woocommerce et j’aimerai ajouter 1 condition à ton code mais je suis vraiment pas doué en code. voilà ce que j’aimerai faire :
Minimum commande = 35€ (Ca c’est ok avec ton code)
condition : si produit “x” dans le panier alors minimum commande = 0€
De plus, est-il possible d’ajouter la phrase d’obligation de minimum de commande directement dans le ‘shopping_cart’ ?
Merci d’avance pour votre aide !
Salut,
Tu peux parcourir le contenu de ton panier en faisant une boucle sur WC()->cart->get_cart(); et vérifier que si l’ID d’un produit X est dedans, alors, minorder = FALSE. et ensuite, si minorder = FALSE, alors tu n’entres pas dans la condition suivante.
En gros, ça ressemblerait à ça :
cart->get_cart();
foreach($items as $item => $values) {
if($values[‘data’]->get_id() == ID_DE_TON_PRODUIT) {
$minorder = FALSE;
}
}
Il te suffit d’ajouter cela juste avant la condition if($panier<$minorder), et d'ajouter une condition supplémentaire qui vérifie que $minorder n'est pas égal ) FALSE. Si tu as besoin d'aide supplémentaire, n'hésite pas à aller sur le Slack WPFR, tu y trouveras de l'aide 😉 .
Bonjour;
Est-ce qu’on peut empêcher la commande sur la base d’un nombre minimal de produits commandés ?
J’ ai essayé de suivre votre tuto mais il ne marche pas 🙁
Merci.
Bonjour,
Dans le paramétré d’expédition du woocommerce =>Zones d’expédition=>Modes d’expédition
vous pouvez me aider pour applique Livraison gratuit si sous-total de la commande >100 $ sinon si sous-total de la commande <100 alors en applique le frai de port 7$ ou livraison à nos locaux sera gratuit
merci.
Bonjour,
Top ce code. Je me demandais comment on pouvait faire pour qu’il fonctionne uniquement pour certains utilisateurs. Par exemple un revendeur pourrait commander à des tarifs préférentiels mais à partir d’un minimum de commande de X €.
Merci 🙂
Bonjour,
Merci pour votre aide.J’utilise une extension qui me permet de laisser le choix entre la livraison et le retrait en magasin (
PI Woocommerce order date time and type).
Je voudrais appliquer le minimum de commande sur la livraison uniquement. Savez-vous comment faire ?
Merci d’avance pour votre aide.
Bonjour, je viens de test ce code et il n’a plus l’air de fonctionner… Il m’empêche bien de commander mais je n’ai aucun message qui s’affiche.
Une MAJ du code à faire ?
Merci de votre aide
Bonjour Baptiste,
En effet, le code avait besoin d’être mis à jour ! Voilà qui est fait.
C’est au niveau de la ligne 11 que le code a changé.
Merci,
Bonne journée !
Bonjour,
Je viens de copier-coller le code dans le fichier functions.php de mon thème et aucun message n’apparait quand mon panier est inférieur à 60€ (montant que j’ai configuré). Le message devrait apparaitre sur la page checkout pourtant non ? Sur la page où il rentre ses infos persos et bancaires.
Merci pour votre aide
Bonjour Hugo,
Le message remonte sur la page checkout, au moment de passer commande. Si la condition du montant panier n’est pas remplie, au moment de valider, le message d’erreur apparaît (comme c’est le cas s’il manque des coordonnées, où si les CGV n’ont pas été acceptée).
Je viens de tester à nouveau ce code, il fonctionne bien sur un WooCommerce à jour.
Vos modifications de code PHP ont été annulées en raison d’une erreur sur la ligne 38 du fichier wp-content/themes/basel-child/functions.php. Veuillez la corriger et réessayer d’enregistrer.
syntax error, unexpected ‘cart’ (T_STRING)
Salut Hicham,
Manifestement il doit y avoir une erreur dans le copier/coller du code, ou peut-être un problème lors de la sauvegarde du ficher.
Bonne journée,