Comment offrir des remises basées sur la quantité dans WooCommerce
Publié: 2020-01-27Généralement, en tant que propriétaire de magasin, vous souhaiterez peut-être parfois offrir des remises si les clients achètent plus d'une quantité d'un produit particulier. Cela peut être soit pour augmenter les ventes, soit pour éliminer les stocks excédentaires. Dans cet article, vous apprendrez à proposer des remises basées sur la quantité dans WooCommerce en utilisant à la fois des extraits de code et des plugins.
Comment offrir des remises basées sur la quantité dans WooCommerce à l'aide d'extraits de code
Explorons comment utiliser un extrait de code pour ce faire. Avec cet extrait de code, nous offrons aux clients une remise de 5 % s'ils achètent plus de 2 quantités du même produit.
Pour cela, il vous faudra ajouter le code ci-dessous dans le fichier functions.php de votre thème enfant :
add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 ); fonction ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){ $product_id = $variation_id > 0 ? $variation_id : $product_id ; ## ----- DÉFINISSEZ LA RÉDUCTION ICI ----- ## $remise_pourcentage = 5 ; // Remise (5%) // L'objet WC_Product $product = wc_get_product($product_id); $price = (float) $product->get_price(); // Définissez le prix de base par défaut du produit en tant que données d'article de panier personnalisées $cart_item_data['base_price'] = $prix ; // Définissez le prix réduit du produit en tant que données d'article de panier personnalisées $cart_item_data['new_price'] = $price * (100 - $discount_percentage) / 100 ; // Définissez le pourcentage en tant que données d'élément de panier personnalisé $cart_item_data['percentage'] = $discount_percentage ; retourner $cart_item_data ; } // Affiche le prix d'origine du produit add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 ); fonction ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){ if( isset($cart_item['base_price']) ) { $product = $cart_item['data'] ; $product_price = wc_price( wc_get_price_to_display( $product, array( 'price' => $cart_item['base_price'] ) ) ); } renvoie $product_price ; } // Affiche le nom du produit avec le pourcentage de remise add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 ); function ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){ if( isset($cart_item['percentage']) && isset($cart_item['base_price']) ) { if( $cart_item['data']->get_price() != $cart_item['base_price'] ) $product_name .= ' <em>(' . $cart_item['percentage'] . '% discounted)</em>' ; } renvoie $product_name ; } add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 ); function ts_custom_discounted_cart_item_price( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) revenir; si ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) revenir; ## ----- REGLER LA QUANTITE ICI ----- ## $targeted_qty = 2 ; // Quantité ciblée // Boucle dans les articles du panier foreach ( $cart->get_cart() as $cart_item ) { // Pour une quantité d'articles de 2 ou plus if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){ // Définir le prix réduit de l'article du panier $cart_item['data']->set_price($cart_item['new_price']); } } }
Le code ci-dessus ajoutera une remise de 5% si la quantité du produit est supérieure à 2. Vous pouvez modifier cela en fonction de vos besoins en modifiant la variable $discount_percentage pour définir la remise souhaitée, et le $targeted_qty pour définir la quantité au-dessus de laquelle vous souhaitez appliquer la réduction.
Vous pourrez désormais voir un prix réduit si vous ajoutez 2 quantités ou plus du même produit dans votre panier.
Nous avons utilisé quatre crochets principaux dans le code ci-dessus :
woocommerce_add_cart_item_data : Ce crochet de filtre est utilisé pour modifier le contenu/les métadonnées du panier.
woocommerce_cart_item_price : Ce crochet de filtre est utilisé pour changer la façon dont les prix sont affichés dans le panier.
woocommerce_cart_item_name : Ce crochet de filtre peut être utilisé pour changer le nom du produit dans le panier. Dans notre exemple, nous l'utilisons pour ajouter le pourcentage de remise au nom du produit.
woocommerce_before_calculate_totals : Ce crochet d'action est utilisé pour remplacer le prix du produit dans le panier.
Comment offrir des remises basées sur la quantité uniquement pour les articles qui ne sont PAS en vente :
Si vous souhaitez limiter cela aux seuls produits qui ne sont pas en vente, il vous suffit de modifier l'extrait de code ci-dessus pour ajouter une condition à l'intérieur de la fonction qui est ajoutée au crochet woocommerce_add_cart_item_data :

add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 ); fonction ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){ $product_id = $variation_id > 0 ? $variation_id : $product_id ; ## ----- DÉFINISSEZ LA RÉDUCTION ICI ----- ## $remise_pourcentage = 5 ; // Remise (5%) // L'objet WC_Product $product = wc_get_product($product_id); // AJOUTER UNE CONDITION ICI pour offrir une RÉDUCTION UNIQUEMENT pour les produits NON en vente if( ! $product->is_on_sale() ){ $price = (float) $product->get_price(); // Définissez le prix de base par défaut du produit en tant que données d'article de panier personnalisées $cart_item_data['base_price'] = $prix ; // Définissez le prix réduit du produit en tant que données d'article de panier personnalisées $cart_item_data['new_price'] = $price * (100 - $discount_percentage) / 100 ; // Définissez le pourcentage en tant que données d'élément de panier personnalisé $cart_item_data['percentage'] = $discount_percentage ; } retourner $cart_item_data ; } // Affiche le prix d'origine du produit add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 ); fonction ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){ if( isset($cart_item['base_price']) ) { $product = $cart_item['data'] ; $product_price = wc_price( wc_get_price_to_display( $product, array( 'price' => $cart_item['base_price'] ) ) ); } renvoie $product_price ; } // Affiche le nom du produit avec le pourcentage de remise add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 ); function ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){ if( isset($cart_item['percentage']) && isset($cart_item['base_price']) ) { if( $cart_item['data']->get_price() != $cart_item['base_price'] ) $product_name .= ' <em>(' . $cart_item['percentage'] . '% discounted)</em>' ; } renvoie $product_name ; } add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 ); function ts_custom_discounted_cart_item_price( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) revenir; si ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) revenir; ## ----- REGLER LA QUANTITE ICI ----- ## $targeted_qty = 2 ; // Quantité ciblée // Boucle dans les articles du panier foreach ( $cart->get_cart() as $cart_item ) { // Pour une quantité d'articles de 2 ou plus if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){ // Définir le prix réduit de l'article du panier $cart_item['data']->set_price($cart_item['new_price']); } } }
De cette façon, vous pouvez offrir des remises basées sur la quantité à l'aide d'extraits de code pour les produits non soldés, soldés ou pour tous les produits, c'est-à-dire à l'échelle du magasin, en indiquant la condition appropriée dans la fonction qui est ajoutée au hook de filtre woocommerce_add_cart_item_data .
Comment offrir des remises basées sur la quantité dans WooCommerce à l'aide de plugins
Si vous n'êtes pas à l'aise avec l'ajout d'un extrait de code aux fichiers de votre site Web, vous pouvez également utiliser des plugins pour le faire :
- Règles de remise pour WooCommerce : Il s'agit d'un plugin gratuit qui vous permet d'ajouter des remises en pourcentage non seulement en fonction des quantités de produits, mais également si vos clients dépassent une certaine limite de prix. Vous pouvez également ajouter des pourcentages de réduction sur un certain nombre d'articles (pas nécessairement du même produit). La version PRO de ce plugin vous permet d'ajouter des remises à l'échelle de la catégorie, des offres BOGO (Buy One Get One Free), une remise à prix fixe au lieu d'une remise en pourcentage, et plus encore.
- Remises conditionnelles pour WooCommerce : Il s'agit d'un autre plugin qui offre presque toutes les fonctionnalités importantes dans sa version gratuite - Vous pouvez ajouter des remises en fonction de la quantité, du nombre d'articles du panier, pour des catégories spécifiques, sur des produits spécifiques, sur des fonctionnalités variables (chemise bleue, taille Medium etc.), pour certains rôles de magasin ou même des clients spécifiques. Sa version PRO a quelques fonctionnalités supplémentaires, l'une d'entre elles étant l'ajout gratuit d'un produit au panier lors de l'achat d'un certain produit.
- Coupons intelligents : Outre les cartes-cadeaux, les crédits en magasin, les coupons d'URL et les restrictions avancées, vous pouvez également restreindre un coupon en fonction du nombre de produits spécifiques dans le panier (exemple : 10 chemises) et également de la quantité totale de plusieurs produits dans le panier. chariot (exemple – 5 chemises + 2 pantalons + 3 ceintures).
De cette façon, vous pouvez utiliser des extraits de code ou des plugins pour offrir des remises à vos clients en fonction des quantités de produits.