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 »

Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #184107
    ilan
    Participant
    Points: 29 pts
    Membre 2 étoiles

    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,

    ====================
    depanagewp
    vpsa2
Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.