- WordPress :5.2
- Statut : résolu
- Ce sujet contient 9 réponses, 2 participants et a été mis à jour pour la dernière fois par
Pixel_endZ, le il y a 1 année et 2 mois.
-
AuteurMessages
-
6 novembre 2019 à 17 h 09 min #2284187
Bonjour,
Ma configuration WP actuelle :
– Version de WordPress : 5.2.4
– Version de PHP/MySQL : 7.2.24 / 5.7.26
– Thème utilisé : Divi
– Thème URI : http://www.elegantthemes.com/gallery/divi/
– Extensions en place : 404page – your smart custom 404 error page (11.0.5), Accordions by PickPlugins (2.1.17), Forum_wordpress_fr (4.2), LoginPress – Customizing the WordPress Login (1.3.2), Site Kit by Google (1.0.1), WooCommerce (3.8.0), WooCommerce Admin (0.21.0), WooCommerce PayPal Checkout Gateway (1.6.17), WP Maintenance Mode (2.2.4), WPS Hide Login (1.5.4.2), Yoast SEO (12.4)
– Adresse du site : https://alterium.ch
– Nom de l’hébergeur : ApacheJ’aimerais savoir si c’est possible d’afficher les prix au mois pour une offre mais on peux seulement acheté à l’année (exemple: prix de l’offre 5euro par mois et dans le panier il prix est de 12×5 euro car minimum une année d’achat)
Merci d’avance
6 novembre 2019 à 19 h 40 min #2284215Bonjour,
Vous devriez pouvoir y arriver avec cette fonction qui marche avec des produits classiques et qui devrait aussi marcher avec des produits virtuels. Dans la fonction exemple, 2904 est l’id du produit, à remplacer par celle de votre produit. Ce produit sera vencu par 12, les autres produits restant vendus individuellement)Code testé, qui fonctionne (à moins que j’aie fait une erreur en le recopiant), à mettre dans le fichier function.php d’un thème enfant. Adapté de : https://businessbloomer.com/woocommerce-define-add-cart-min-max-incremental-quantities/ (business bloomer est une excellente source de codes pour woocommerce).
function bloomer_woocommerce_quantity_changes( $args, $product ) { if ($product->id == 2904 ) { if ( ! is_cart() ) { $args['input_value'] = 1; // Start from this value (default = 1) $args['max_value'] = 12; // Max quantity (default = -1) $args['min_value'] = 12; // Min quantity (default = 0) $args['step'] = 1; // Increment/decrement by this value (default = 1) } else { // Cart's "min_value" is already 0 and we don't need "input_value" $args['max_value'] = -1; // Max quantity (default = -1) $args['step'] = 12; // Increment/decrement by this value (default = 0) // ONLY ADD FOLLOWING IF STEP < MIN_VALUE $args['min_value'] = 0; // Min quantity (default = 0) } } else { if ( ! is_cart() ) { $args['input_value'] = 1; // Start from this value (default = 1) $args['max_value'] = 1; // Max quantity (default = -1) $args['min_value'] = 1; // Min quantity (default = 0) $args['step'] = 1; // Increment/decrement by this value (default = 1) } else { // Cart's "min_value" is already 0 and we don't need "input_value" $args['max_value'] = 50; // Max quantity (default = -1) $args['step'] = 1; // Increment/decrement by this value (default = 0) // ONLY ADD FOLLOWING IF STEP < MIN_VALUE $args['min_value'] = 0; // Min quantity (default = 0) } } return $args; } add_filter( 'woocommerce_quantity_input_args', 'bloomer_woocommerce_quantity_changes', 10, 2 );?>
6 novembre 2019 à 20 h 46 min #2284230En fait il y avait bien une erreur en recopiant: le ?> terminal. Avec lui, la fonction risque de ne pas fonctionner. J’en profite pour vous donner une forme plus courte. C’est mieux de l’ utiliser. J’espère ne pas avoir fait d’erreur cette fois.
function bloomer_woocommerce_quantity_changes( $args, $product ){ if ($product->id == 2904 ){ if ( ! is_cart() ) { $args['input_value'] = 1; // Start from this value (default = 1) $args['max_value'] = 12; // Max quantity (default = -1) $args['min_value'] = 12; // Min quantity (default = 0) $args['step'] = 1; // Increment/decrement by this value (default = 1) }else { // Cart's "min_value" is already 0 and we don't need "input_value" $args['max_value'] = 50; // Max quantity (default = -1) $args['step'] = 12; // Increment/decrement by this value (default = 0) // ONLY ADD FOLLOWING IF STEP < MIN_VALUE $args['min_value'] = 0; // Min quantity (default = 0) } } return $args; } add_filter( 'woocommerce_quantity_input_args', 'bloomer_woocommerce_quantity_changes', 10, 2 );
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
ferman.
6 novembre 2019 à 21 h 13 min #2284234Bonsoir,
Je me permets de vous demandez pouvez vous me mettre l’extrait à copier pour 3 produits svp ? car en le collant à la suite cela ne fonctionne pas.
Merci d’avance
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
Pixel_endZ.
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
Pixel_endZ.
6 novembre 2019 à 21 h 41 min #2284239Vous remplacez la ligne 1 du code par la ligne 3.
if ($product->id == 2904 ){ if ($product->id == (2904 ||2903 || 2902)){
6 novembre 2019 à 21 h 56 min #2284241Merci infiniment
6 novembre 2019 à 23 h 57 min #2284247Quelques précisions supplémentaires (ce n’est pas forcément évident):
- pour !is cart (ce qui n’est pas le panier: la page du produit)
$args[‘input_value’] = 1; // Start from this value (default = 1) pas important: laissez 1
$args[‘max_value’] = 24; // Max quantity (default = -1) mettez un multiple de 12 correspondant au nombre maximum de produits en stock (ici 24) , -1 = pas de limite.$args[‘min_value’] = 12; // Min quantity (default = 0) signifie vous les vendez par paquet de 12
$args[‘step’] = 12; // Increment/decrement by this value (default = 1) signifie vous ne pouvez les ajouter ou les enlever que par 122. else (le panier)
// Cart’s “min_value” is already 0 and we don’t need “input_value”
$args[‘max_value’] = 24; // Max quantity (default = -1) mettez le même multiple de 12 qu’avant. Correspondant au nombre maximum de produits en stock (ici 24)
$args[‘step’] = 12; // Increment/decrement by this value (default = 0) comme ci-dessus.
// ONLY ADD FOLLOWING IF STEP < MIN_VALUE
$args[‘min_value’] = 0; // Min quantity (default = 0) (on aurait pu enlever cette ligne mais ce n’est pas important)7 novembre 2019 à 12 h 44 min #2284312Bonjour,
J’ai un problème avec ce que vous m’avez donné, il met tout les produit avec un minimum de 12 mois
Les produits qui doivent être avec 12 mois au minimum ont l’ID 43, 51 ,52.
Ai-je peut être fait une erreur ?
Edit: je précise que j’ai enlevé le code que vous m’avez donnée et les produits fonctionnent de nouveau 1 par 1
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
Pixel_endZ.
7 novembre 2019 à 20 h 52 min #2284381Bonjour,
Non vous n’avez pas fait d’erreur. C’est moi qui ai fait ça en 5 minutes hier soir et sans vérifier sur les autres produits (donc trop rapidement -> donc erreur grossière!)
Il faut en fait mettre:
if ($product->id == (43)||$product->id == (51)||$product->id == (52)){
Essayez et dites moi si ça marche.
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
ferman.
7 novembre 2019 à 20 h 57 min #2284383Tout fonctionne merci beaucoup
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.