Я копирую и вставляю этот файл (глобальный / количество-ввод. php) в каталог моей темы. И сделал эти изменения
количество-ввод. php
<div class="quantity">
<?php do_action( 'woocommerce_before_quantity_input_field' ); ?>
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $label ); ?></label>
<button type="button" class="minus" >-</button>
<input
type="number"
id="<?php echo esc_attr( $input_id ); ?>"
class="<?php echo esc_attr( join( ' ', (array) $classes ) ); ?>"
step="<?php echo esc_attr( $step ); ?>"
min="<?php echo esc_attr( $min_value ); ?>"
max="<?php echo esc_attr( 0 < $max_value ? $max_value : '' ); ?>"
name="<?php echo esc_attr( $input_name ); ?>"
value="<?php echo esc_attr( $input_value ); ?>"
title="<?php echo esc_attr_x( 'Qty', 'Product quantity input tooltip', 'woocommerce' ); ?>"
size="4"
placeholder="<?php echo esc_attr( $placeholder ); ?>"
inputmode="<?php echo esc_attr( $inputmode ); ?>" />
<button type="button" class="plus" >+</button>
<?php do_action( 'woocommerce_after_quantity_input_field' ); ?>
</div>
jquery
jQuery(document).ready(function(){
$('.product-quantity').on( 'click', 'button.plus, button.minus', function() {
// Get current quantity values
var qty = $( this ).parent().find('input');
var val = parseFloat(qty.val());
var max = parseFloat(qty.attr( 'max' ));
var min = parseFloat(qty.attr( 'min' ));
var step = parseFloat(qty.attr( 'step' ));
// Change the value if plus or minus
if ( $( this ).is( '.plus' ) ) {
if ( max && ( max <= val ) ) {
qty.val( max );
} else {
qty.val( val + step );
}
} else {
if ( min && ( min >= val ) ) {
qty.val( min );
} else if ( val > 1 ) {
qty.val( val - step );
}
}
$('button[name="update_cart"]' ).prop( 'disabled', false );
$('button[name="update_cart"]' ).trigger("click");
});
});
jQuery(document).ajaxComplete(function(){
jQuery('.quantity').off('click', '.plus').on('click', '.plus', function(e) {
$input = jQuery(this).prev('input.qty');
var val = parseInt($input.val());
$input.val( val+1 ).change();
});
jQuery('.quantity').off('click', '.minus').on('click', '.minus',
function(e) {
$input = jQuery(this).next('input.qty');
var val = parseInt($input.val());
if (val > 1) {
$input.val( val-1 ).change();
}
});
});
работает нормально, но проблема в том, когда я обновляю любой продукт на странице корзины это больше не работает. Я попытался добавить функцию ajaxcomplete тоже безуспешно. есть какое-то решение? Пожалуйста, поправьте меня, если я сделал что-то не так? Спасибо