Показывать количество вводимых данных только для чтения на странице корзины, когда минимальное значение равно максимальному значению в WooCommerce - PullRequest
0 голосов
/ 25 мая 2019

Применение этого фильтра с 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 (представленный фильтр не работает на странице продукта.количество) поле ввода все еще видно, какой желаемый для меня результат.

1 Ответ

1 голос
/ 25 мая 2019

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

Сначала прочитайте "Как переопределить шаблоны woocommerce через активную тему" , в которой объясняется, как скопировать файл шаблона из плагина WooCommerce в папку вашей темы, чтобы внести некоторые необходимые изменения.

Связанный файл шаблона для копирования: global/quantity-input.php

Как только он будет скопирован в вашу тему в папке «woocommerce» в «глобальной» подпапке, откройте / отредактируйте файл 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...