Woocommerce продукт отображал цену манипулирования с помощью jQuery - PullRequest
1 голос
/ 05 марта 2019

На основе " Получить выбранную цену вариации в jQuery для продуктов Woocommerce Variable * " код ответа на один из моих последних вопросов, этот код дает пользователям возможность ввода параметров продукта, и яЯ пытаюсь использовать значения для расчета цены, отображаемой для пользователя, но я не могу понять это.

Весь код работает, кроме части над окном предупреждающего сообщения.Я попытался добавить функцию фильтрации get_price_html() внутри тегов php над предупреждением, но она показывает все виды ошибок.

Можно ли просто использовать JavaScript для изменения отображаемой цены?

Это код, который я на самом деле использую:

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
                        }
                    });

                    var rope_price = length*vprice;
                    document.cookie = 'rope_price_cookie='+rope_price;

                    ////////// This is where I would like to add some code to change the displayed price //////
                    $('price') = rope_price;  /// something like this, only it doesn't work :(

                    alert('variation Id: '+vid+' || Length: '+length+' || Diameter: '+diameter+' || Variantprice: '+vprice+' ||Rope price: '+rope_price);

                        }
                    }
            });
        });
        </script>
        <?php       
    }   
}

Любая помощь приветствуется.

1 Ответ

1 голос
/ 05 марта 2019

Вы можете присвоить идентификатор элементу <span>, например, <span id="price"></span>, а затем в своем JS выполните следующее:

$("#price").html(rope_price);

Обратите внимание, что # обозначает идентификатор, вытакже можно использовать селектор классов (.price), который может быть полезен, если вы отображаете цену в нескольких разделах вашей страницы.Затем вы можете обновить все эти элементы сразу, когда используете класс (сделайте его более описательным, чем price, тогда, чтобы предотвратить конфликт имен)

...