WooFrance Dépannage et support WordPress WooCommerce › Forums › Forum de Support WooCommerce › Modifier le prix d’un produit lors de l’appel « add to cart »
- Ce sujet contient 0 réponse, 1 participant et a été mis à jour pour la dernière fois par ilan, le il y a 4 années et 8 mois.
Affichage de 1 message (sur 1 au total)
-
AuteurMessages
-
23 avril 2020 à 12 h 08 min #184107
Bonjour,
J’essais de modifier le prix du produit ajouté dans mon panier mais à chaque ajout de produit tout les produits du panier on le même prix alors que le total et correct…
L’url du single post = https://xxxxx.local/product/durex_surprise_me_preserv_x3_assort/?productid=4490573&pharmacie_id=15
J’utilise ensuite les hooks suivant:
add_action( 'woocommerce_before_add_to_cart_button', 'pharmizz_hidden_price' ); function pharmizz_hidden_price() { global $wpdb; $pharmacie_id = urldecode($_GET['pharmacie_id']); $productid = urldecode($_GET['productid']); // WC()->session->set( 'var_pharmacie_id', $pharmacie_id ); // WC()->session->set( 'var_productid', $productid ); $price = $wpdb->get_var($wpdb->prepare("SELECT pm.meta_value FROM {$wpdb->prefix}postmeta pm WHERE pm.meta_key = '_regular_price' AND pm.post_id = '%d' AND pm.user_id = '%d'", $productid, $pharmacie_id)); ?> <input type="hidden" id="price_val" name="custom_price" value="<? echo $price ?>"> <?php } add_filter( 'woocommerce_add_cart_item_data', 'pharmizz_save_custom_fields_data_to_cart', 10, 2 ); function pharmizz_save_custom_fields_data_to_cart( $cart_item_data, $product_id ) { if( isset( $_POST['custom_price'] ) && ! empty( $_POST['custom_price'] ) ) { // Set the custom data in the cart item $cart_item_data['custom_price'] = (float) sanitize_text_field( $_POST['custom_price'] ); // Make each item as a unique separated cart item $cart_item_data['unique_key'] = md5( microtime().rand() ); } return $cart_item_data; } add_action( 'woocommerce_before_calculate_totals', 'pharmizz_change_cart_item_price', 30, 1 ); function pharmizz_change_cart_item_price( $cart ) { if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return; // Loop through cart items foreach ( $cart->get_cart() as $cart_item ) { // Set the new price if( isset($cart_item['custom_price']) ){ $cart_item['data']->set_price($cart_item['custom_price']); } } }
Du coup, à chaque ajout, tout les produits on le même prix mais le total et correct…
Je merde ou ? 🙂
Merci,
====================
-
AuteurMessages
Affichage de 1 message (sur 1 au total)
- Vous devez être connecté pour répondre à ce sujet.