Показывать ввод количества как только чтение на странице корзины, когда минимальное значение равно максимальному значению в WooCommerce

Применение этого фильтра с min и max = 1 приведет к исчезновению поля ввода количества на странице корзины:

add_filter( 'woocommerce_quantity_input_args', 'custom_cart_qty_range', 10, 2 );        

function custom_cart_qty_range( $args, $product ) {
   $args['min_value'] = 1;
   $args['max_value'] = 1;
   return $args;
}

Я совершенно не понимаю эту «фичу», потому что покупатели вообще не видят количество товаров. Я хотел бы ввести readonly и вместо этого применить собственный CSS. У меня есть этот CSS, но мне нужно, чтобы WooCommerce не делала исключение для поля ввода количества, когда min = max.

На странице продукта, когда min = max (представленный фильтр не работает с количеством страниц продукта) поле ввода все еще отображается, что является желаемым результатом для меня.


person Ryszard Jędraszyk    schedule 25.05.2019    source источник


Ответы (1)


Если вы хотите остановить такое поведение WooCommerce, вам нужно будет переопределить global/quantity-input.php файл шаблона через активную тему.

Сначала прочтите «Как переопределить шаблоны woocommerce с помощью вашей активной темы» < / a>, в котором объясняется, как скопировать файл шаблона из плагина WooCommerce в папку вашей темы, чтобы внести желаемые изменения.

Соответствующий файл шаблона для копирования: global/quantity-input.php

После того, как он был скопирован внутри вашей темы в папку "woocommerce" в подпапке "global", откройте / отредактируйте файл quantity-input.php и измените следующий блок кода (со строки 21 на 25):

?>
<div class="quantity hidden">
    <input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" />
</div>
<?php

Следующим:

?>
<div class="quantity">
    <input type="text" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" readonly="readonly" />
</div>
<?php

Сохранить, все готово.

Теперь, когда min_value будет равно max_value, поле будет отображаться только для чтения с правильным значением.


Теперь, если вам это нужно только на странице корзины, вам придется вместо этого внести это изменение:

if ( is_cart() ) {
    ?>
    <div class="quantity">
        <input type="text" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" readonly="readonly" />
    </div>
    <?php
} else {
    ?>
    <div class="quantity hidden">
        <input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" />
    </div>
    <?php
}
person LoicTheAztec    schedule 25.05.2019