Get selected variation price in jQuery on Woocommerce Variable products

后端 未结 2 1117
栀梦
栀梦 2020-12-10 08:46

How do I use the variation id to find the variations price using javascript? This is what I\'ve got so far. I\'ve got the variations ID, but i can\'t figure it out. I\'ve be

相关标签:
2条回答
  • 2020-12-10 09:12

    Updated code to update the class showing the select var price..

    add_action( 'woocommerce_before_add_to_cart_quantity', 'func_option_valgt' );
    function func_option_valgt() {
        global $product;
    
        if ( $product->is_type('variable') ) {
            $variations_data =[]; // Initializing
    
            // Loop through variations data
            foreach($product->get_available_variations() as $variation ) {
                // Set for each variation ID the corresponding price in the data array (to be used in jQuery)
                $variations_data[$variation['variation_id']] = $variation['display_price'];
            }
            ?>
            <script>
            jQuery(function($) {
                var jsonData = <?php echo json_encode($variations_data); ?>,
                    inputVID = 'input.variation_id';
    
                $('input').change( function(){
                    if( '' != $(inputVID).val() ) {
                        var vid      = $(inputVID).val(), // VARIATION ID
                            length   = $('#cfwc-title-field').val(), // LENGTH
                            diameter = $('#diameter').val(),  // DIAMETER
                            vprice   = ''; // Initilizing
    
                        // Loop through variation IDs / Prices pairs
                        $.each( jsonData, function( index, price ) {
                            if( index == $(inputVID).val() ) {
                                vprice = price; // The right variation price
                            }
                        });
    
                        //alert('variation Id: '+vid+' | Lengde: '+length+' | Diameter: '+diameter+' | Variantpris: '+vprice);
                        // Update the need class to show price
                        var csymbol = '&pound;'
                        // SET YOUR CURRANCY SYMBOL ABOVE
                        $(".availability").html(csymbol+vprice);
                    }
                });
            });
            </script>
            <?php
        }
    }

    0 讨论(0)
  • 2020-12-10 09:17

    With the following revisited code you will get in your jQuery script the price from the variation ID:

    add_action( 'woocommerce_before_add_to_cart_quantity', 'func_option_valgt' );
    function func_option_valgt() {
        global $product;
    
        if ( $product->is_type('variable') ) {
            $variations_data =[]; // Initializing
    
            // Loop through variations data
            foreach($product->get_available_variations() as $variation ) {
                // Set for each variation ID the corresponding price in the data array (to be used in jQuery)
                $variations_data[$variation['variation_id']] = $variation['display_price'];
            }
            ?>
            <script>
            jQuery(function($) {
                var jsonData = <?php echo json_encode($variations_data); ?>,
                    inputVID = 'input.variation_id';
    
                $('input').change( function(){
                    if( '' != $(inputVID).val() ) {
                        var vid      = $(inputVID).val(), // VARIATION ID
                            length   = $('#cfwc-title-field').val(), // LENGTH
                            diameter = $('#diameter').val(),  // DIAMETER
                            vprice   = ''; // Initilizing
    
                        // Loop through variation IDs / Prices pairs
                        $.each( jsonData, function( index, price ) {
                            if( index == $(inputVID).val() ) {
                                vprice = price; // The right variation price
                            }
                        });
    
                        alert('variation Id: '+vid+' | Lengde: '+length+' | Diameter: '+diameter+' | Variantpris: '+vprice);
                    }
                });
            });
            </script>
            <?php
        }
    }
    

    Code goes on function.php file of your active child theme (or active theme). Tested and works.

    0 讨论(0)
提交回复
热议问题