jquery WooCommerce -将数量选择器添加到产品存档

dvtswwa3  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(99)

我在archive-products.php中创建了一个挂钩到产品循环的按钮,以允许客户选择/调整他们添加到购物车的数量。
当用户添加一个产品时,它工作正常,但是如果我尝试添加更多产品,则按钮会从循环中较早输出的产品中消失。
我如何修复我的代码来阻止添加到购物车按钮消失?x1c 0d1x的数据

add_filter( 'woocommerce_loop_add_to_cart_link', function ( $html, $product ) {
    if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
        $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' : '',
        ) ) );

        $html = sprintf( '%s%s<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s ct-cart-actions">%s</a>%s',
        '<form class="cart">',
        woocommerce_quantity_input( array(), $product, false ),
        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' ),
        esc_html( $product->add_to_cart_text() ),
        '</form>'
        );
    }
    return $html;
}, 10, 2 );

add_action( 'wp_footer' , function (){
 if( is_home() || is_front_page() || is_shop() || is_product_category() || is_product_tag() ) { ?>
    <script type='text/javascript'>
        jQuery( document ).ready( function( $ ) {
        $( document ).on( 'change', '.quantity .qty', function() {
            $( this ).parent( '.quantity' ).next( '.add_to_cart_button' ).attr( 'data-quantity', $( this ).val() );
        });
    });
        
        jQuery(function($) {
            $(".add_to_cart_button.product_type_simple").on('click', function() {
                var $button = $(this);
                $button.data('quantity', $button.parent().find('input.qty').val());
            });
            $(document.body).on("adding_to_cart", function() {
                $("a.added_to_cart").remove();
            });
        });
    </script>
<?php }
} );

字符串

nfeuvbwi

nfeuvbwi1#

似乎是Blocksy主题不兼容。我的解决办法是

$(document.body).on("adding_to_cart", function() {
    $("a.added_to_cart").remove();
});

字符串

$(document.body).on("added_to_cart", function(event, fragments, cart_hash, $button) {
    $button.removeClass('added').addClass('loading');
});


现在有效

相关问题