首页 > 解决方案 > 如何修复数量输入字段不影响单个产品页面woocommerce上的其他数量输入字段?

问题描述

我们已将以下代码添加到 Woocommerce 中的 functions.php 文件中。目标是用一个数量选择器和一个充当“添加到购物车”按钮的购物车图标替换默认的 Woocommerce“添加到购物车”按钮。到目前为止,它已根据需要在每个页面上工作,除了单个产品页面。

在我们的产品页面上,我们有一个数量选择器和一个影响所列产品的“添加到购物车”按钮,下面是 4 个相关产品的列表,每个产品都有自己的数量选择器。

这是一个例子

我们遇到的问题是,如果您更改任何数量,所有其他数量也会更改。

/*Adds Quantity to product archive*/

add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_loop_ajax_add_to_cart', 10, 2 );
function quantity_inputs_for_loop_ajax_add_to_cart( $html, $product ) {
    if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
        // Get the necessary classes
    $class = implode( ' ', array_filter( array(
            'button',
            'product_type_' . $product->get_type(),
            $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
            $product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
        ) ) );

        // Adding embeding <form> tag and the quantity field
        $html = sprintf( '%s%s%s%s<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>%s',
        '<form class="cart">',
    '<div class="form_cart_first_half">',
        woocommerce_quantity_input( array(), $product, false ),
    '</div>',
        esc_url( $product->add_to_cart_url() ), 
        esc_attr( isset( $quantity ) ? $quantity : 1 ),
        esc_attr( $product->get_id() ),
        esc_attr( $product->get_sku() ),
        esc_attr( isset( $class ) ? $class : 'button' ),
        '<button type="submit" class="button alt" id="pa_add_to_cart_button">' . sprintf('<i class="fas fa-shopping-cart" id="pa_add_to_cart_button_icon" style="font-size:24px; display: inline-block;"></i>') . '</button>',
        '</form>'
        );
    }
    return $html;
}

如果有人对如何解决此问题有任何建议,我将不胜感激。

感谢您的时间。

标签: phpwordpresswoocommerce

解决方案


推荐阅读