Сделать так, чтобы количество запасных вариантов отображалось в выпадающем списке в Woocommerce. - PullRequest
0 голосов
/ 19 ноября 2018

В настоящее время это то, что он показывает на нашем сайте с текущим кодом: enter image description here

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

Текущий код:

add_action( 'woocommerce_before_add_to_cart_button', 'display_stock_variations_loop' );
function display_stock_variations_loop(){
    global $product;
    if ( $product->get_type() == 'variable' ) {
        foreach ( $product->get_available_variations() as $key ) {
            $attr_string = array();
            foreach ( $key['attributes'] as $attr_name => $attr_value ) {
                $attr_string[] = $attr_value;
            }
            if ( $key['max_qty'] > 0 ) { 
        echo '' . implode( ', ', $attr_string ) . ': ' . $key['max_qty'] . ' in stock<br>'; 
            } else { 
        echo '' . implode(', ', $attr_string ) . ': out of stock<br>'; 
            }
    }
    echo '<br>';
    }
}

1 Ответ

0 голосов
/ 19 ноября 2018

Отображаемое количество и статус выбранного варианта уже управляется woocommerce . Вам просто нужно добавить значение имени вашего атрибута «Размер», используя следующее (без необходимости использования JavaScript) :

add_filter( 'woocommerce_get_availability_text', 'filter_variations_availability_text', 10, 2 );
function filter_variations_availability_text( $availability_text, $product ) {

    if( $product->get_type() == 'variation' && $product->get_attribute('size') ) {

        $availability_text = $product->get_attribute('size') . ': ' . $availability_text;
    }
    return $availability_text;
}

Код помещается в файл function.php вашей активной дочерней темы (active theme). Проверено и работает.

enter image description here

...