¿Obtener precio de producto variable con jQuery en WooCommerce?

2 minutos de lectura

avatar de usuario de colapsnux
colapsnux

Tengo algunas variaciones por productos que contienen precios diferentes, estoy tratando de obtener el precio variable del producto con jQuery y lo obtengo, pero este código a continuación solo obtiene el precio de variación mínimo y me gustaría obtener el precio actual para la variación actual . Luego, cuando cambio otro valor seleccionado, la variación cambia en la parte delantera con el precio correcto, pero en el registro de la consola se muestra el precio mínimo una y otra vez y no el precio correspondiente a la variación correspondiente.

jQuery( '.variations_form' ).each( function() {
    // when variation is found, do something
    jQuery(this).on( 'found_variation', function( event, variation ) {
        var product="<?php echo wc_get_product($variation_id) ?>",
            price      = <?php echo $product->get_price() ?>;
        console.log(price);
    });
});

Traté de mirar en el add-to-cart-variation.js y el wp-util.js file para encontrar alguna forma, pero no puedo hacerlo.

¿Hay alguna manera de recuperar correctamente el precio de variación actual dinámicamente con jQuery?

Su código está en la pista solo use variación para obtener precio, imagen, etc.

jQuery(document).ready(function() {
    jQuery( '.variations_form' ).each( function() {
        jQuery(this).on( 'found_variation', function( event, variation ) {
            console.log(variation);//all details here
            var price = variation.display_price;//selectedprice
            console.log(price);
        });
    });
   });

Encontré una solución pero recuperó el precio del .single_variation_wrap -> .price -> .amount texto que se genera desde el archivo variación.php.

jQuery( '.variations_form' ).each( function() {
        jQuery(this).on( 'change', '.variations select', function() {
            var currency    = currency = ' <?php echo get_woocommerce_currency_symbol(); ?>',
                price       = jQuery('.woocommerce-variation-price .amount').text().replace(/ /g,''),
                parsePrice  = parseFloat(price),
                totalPrice  = parsePrice.toFixed(2) + currency;

            if ( jQuery('.single_variation_wrap .test').length ) {
              jQuery('.single_variation_wrap .test').html('');  
            }
            console.log(totalPrice);
            jQuery('.single_variation_wrap').append('<span class="test">' + totalPrice + '</span>');
        });
    });

No es una solución bastante buena, pero funciona.

¿Hay alguna otra solución profesional? ¿Cómo puedo hacerlo?

¿Ha sido útil esta solución?