Woocommerce изменение цены продукта внутри Добавить в корзину кнопку - PullRequest
0 голосов
/ 24 апреля 2020

Я использую " Отображение цены на кнопку" Добавить в корзину "из функций. php файл в Woocommerce " код ответа, который добавляет цену в простой продукт.

Но я хочу улучшить эту функцию и динамически отображать выбранную цену изменения внутри кнопки. С помощью этого кода на странице варианта товара отображается только самая низкая цена. Есть ли какое-нибудь решение?

Как выглядит кнопка добавления в корзину (варианты не выбраны) : How add to cart button looks now(no options chosen)

Как я хочу отображаться: How I want to be displayed

1 Ответ

1 голос
/ 24 апреля 2020

Может быть, это кому-нибудь пригодится! Результат. Добавить в корзину кнопку переменного продукта

add_filter( 'woocommerce_product_add_to_cart_text', 'custom_add_to_cart_price', 20, 2 ); // Shop and other archives pages
add_filter( 'woocommerce_product_single_add_to_cart_text', 'custom_add_to_cart_price', 20, 2 ); // Single product pages
function custom_add_to_cart_price( $button_text, $product ) {
    // Variable products
    if( $product->is_type('variable') ) {
        // shop and archives
        if( ! is_product() ){

            $product_price = wc_price( wc_get_price_to_display( $product, array( 'price' => $product->get_variation_price() ) ) );
            return $button_text . ' - From ' . strip_tags( $product_price );
        } 
        // Single product pages
        else {
            $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
                       vprice   = ''; // Initilizing

                    // Loop through variation IDs / Prices pairs
                    $.each( jsonData, function( index, price ) {
                        if( index == $(inputVID).val() ) {
                            vprice = Math.round(price); // The right variation price
                        }
                    });
                    // Change price dynamically when changing options
                    $( "button.single_add_to_cart_button.button.alt span" ).remove();
                    $(".single_add_to_cart_button").append("<span>" + " " + vprice + " ₴" + "</span>");
                }
            });
        });
        </script><?php
            return $button_text;
        }
    } 
    // All other product types
    else {
        $product_price = wc_price( wc_get_price_to_display( $product ) );
        return $button_text . '  ' . strip_tags( $product_price );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...