在商店页面上添加适用于WooCommerce插件的数量和单位的数量字段

时间:2019-04-02 13:10:11

标签: wordpress woocommerce

我正在尝试将数量字段添加到我的woocommerce商店页面。我设法将数量字段添加到商店页面,并且正确地增加了数量,但是当我点击添加到卡按钮时,它用错误的值更新了购物车。

我认为这是有矛盾的,还是没有考虑WooCommerce插件的数量和单位,而是将所有内容四舍五入到最接近的数字。

这是我必须在商店页面上输入的数量字段。

/**
 * Add quantity field on the shop page.
 */
function ace_shop_page_add_quantity_field() {
    /** @var WC_Product $product */
    $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 );
/**
 * Add required JavaScript.
 */
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' );

因此,使用当前代码,如果我在数量字段中设置了1.375,然后单击添加到购物车,我发现自己的购物车中的数量是1,而不是1.375

0 个答案:

没有答案