woocomerce добавить количество выпадающих на страницу продуктов - PullRequest
0 голосов
/ 22 сентября 2019

Я добавляю поле количества отсюда - https://aceplugins.com/how-to-add-a-quantity-field-to-shop-pages-in-woocommerce/, которое показывает поле количества на странице продуктов.это работает хорошо, теперь я хочу сделать это выпадающим.Основан в интернете - https://aceplugins.com/making-the-quantity-field-a-dropdown-in-woocommerce/ Показывает выпадающий список, но проблема в том, что при выборе количества - 2 или 3 и т. Д. Корзина не обновляет значения. Также у меня есть этот код:

add_filter ('woocommerce_add_to_cart_validation', 'remove_cart_item_before_add_to_cart', 20, 3);
function remove_cart_item_before_add_to_cart($passed, $product_id, $quantity)
{
    if (!WC ()->cart->is_empty ())
        WC ()->cart->empty_cart ();
    return $passed;
}

Вglobal / amount-input.php

if ( ! defined( 'ABSPATH' ) ) exit;

if ( $max_value && $min_value === $max_value ) {
    ?><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
} elseif ( isset ( $dropdown_steps ) ) {
    ?><div class="quantity">
        <label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php esc_html_e( 'Quantity', 'woocommerce' ); ?></label>
        <select name="<?php echo esc_attr( $input_name ); ?>" class="quantity" id="<?php echo esc_attr( $input_id ); ?>"><?php
            foreach ( $dropdown_steps as $i ) :
                ?><option value="<?php echo absint( $i ); ?>"><?php echo sprintf( _n( '%d Item', '%d Items', $i, 'woocommerce' ), $i ); ?></option><?php
            endforeach
        ?></select>
    </div><?php
} else {
    ?><div class="quantity">
        <label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php esc_html_e( 'Quantity', 'woocommerce' ); ?></label>
        <input type="number" id="<?php echo esc_attr( $input_id ); ?>" class="input-text qty text" 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" pattern="<?php echo esc_attr( $pattern ); ?>" inputmode="<?php echo esc_attr( $inputmode ); ?>" aria-labelledby="<?php echo ! empty( $args['product_name'] ) ? sprintf( esc_attr__( '%s quantity', 'woocommerce' ), $args['product_name'] ) : ''; ?>" />
    </div>
}

In functions.php

  function ace_shop_page_add_quantity_field() {
     $product = wc_get_product( get_the_ID() );

                if ( ! $product->is_sold_individually() && 'variable' != $product->get_type() && $product->is_purchasable() ) {
 woocommerce_quantity_input( array( 'min_value' => 1, 'max_value' => $product->backorders_allowed() ? '' : $product->get_stock_quantity() ) );
                }

            }
     add_action( 'woocommerce_after_shop_loop_item', 'ace_shop_page_add_quantity_field', 12 );




 function ace_shop_page_quantity_add_to_cart_handler() {

    wc_enqueue_js( '
        $(".woocommerce .products").on("click", ".quantity input", function() {
            return false;
        });
        $(".woocommerce .products").on("change input", ".quantity .qty", function() {
            var add_to_cart_button = $(this).parents( ".product" ).find(".add_to_cart_button");

            // For AJAX add-to-cart actions
            add_to_cart_button.data("quantity", $(this).val());

            // For non-AJAX add-to-cart actions
            add_to_cart_button.attr("href", "?add-to-cart=" + add_to_cart_button.attr("data-product_id") + "&quantity=" + $(this).val());
        });

        // Trigger on Enter press
        $(".woocommerce .products").on("keypress", ".quantity .qty", function(e) {
            if ((e.which||e.keyCode) === 13) {
                $( this ).parents(".product").find(".add_to_cart_button").trigger("click");
            }
        });
    ' );

}
add_action( 'init', 'ace_shop_page_quantity_add_to_cart_handler' );

, который каждый раз перед добавлением продукта сбрасывает количество.Но это не помогает.Пожалуйста, помогите мне, что не так в моем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...