WooFrance Dépannage et support WordPress WooCommerce › Forums › Forum de Support WooCommerce › Ajout frais supplémentaires dans le panier
Étiqueté : php panier
- Ce sujet contient 3 réponses, 3 participants et a été mis à jour pour la dernière fois par Philippe, le il y a 4 années.
-
AuteurMessages
-
8 février 2020 à 20 h 44 min #164080
Bonjour à la communauté,
J’ai besoin d’un petit coup de main sur quelques lignes de code. Je cherche à ajouter une ligne de frais supplémentaire (consigne) fonction de la présence d’un attribut (Consigne) lié à certains produits et à leurs quantités. Le code actuelle fonctionne si une seul référence de produit est dans le panier possède l’attribut ‘Consigne’. Mais si un autre produit avec ce même attribut identique est ajouté au panier, le code n’ajoute pas la consigne en supplément. Vous savez comment le corriger ? Je bute un peu là … Il s’agirait à priori d’intégrer un « foreach » pour répéter le calcul à tous les articles du panier, mais je ne sais pas comment le coder …
Voici le code :
function woo_add_cart_fee(){ global $woocommerce; if(is_admin() && !defined('DOING_AJAX')) return; //Initialisation of costs $consigne = 0.5; //cart $cart = $woocommerce->cart->get_cart(); foreach($cart as $product) { $the_product = get_product($product['product_id']); //fee - products $nb_products = $product['quantity']; $activation_cost += ((float) $the_product->get_attribute('Consigne')) * $nb_products; } //intergration fees if( $activation_cost >= 0 ) { $woocommerce->cart->add_fee("Consigne", $consigne*$nb_products, true, ''); } } add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');
Joachim
9 février 2020 à 16 h 32 min #164167Pour ceux que ça intéresse, j'ai trouvé la solution : function woo_add_cart_fee(){ global $woocommerce; if(is_admin() && !defined('DOING_AJAX')) return; //Initialisation des coûts $consigne = 0.5; //Parcours du panier $cart = $woocommerce->cart->get_cart(); foreach($cart as $product) { $the_product = get_product($product['product_id']); //Frais d'activation, un coût par produit $nb_products1 = $product['quantity']; $activation_cost += ((float) $the_product->get_attribute('Consigne')) * $nb_products1; if( $activation_cost >= 0 ) { $nb_products = $nb_products + $nb_products1 ; } } //Application des coûts calculés if( $nb_products >= 0 ) { $woocommerce->cart->add_fee("Consigne", $consigne*$nb_products, true, ''); } } add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');
Joachim
1 user thanked author for this post.
14 août 2020 à 16 h 32 min #19335423 novembre 2020 à 19 h 10 min #202505 -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.