Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果产品已添加到WooCommerce中的购物车,如何重命名“添加到购物车”按钮_Woocommerce - Fatal编程技术网

如果产品已添加到WooCommerce中的购物车,如何重命名“添加到购物车”按钮

如果产品已添加到WooCommerce中的购物车,如何重命名“添加到购物车”按钮,woocommerce,Woocommerce,当Ajax添加到购物车功能在my WooCommerce store上处于活动状态时,在Ajax添加到购物车上,首先单击它会显示一个选中的图标符号,如: 下面的代码将“添加到”按钮购物车文本更改为“Seçildi!”,如果产品已经在购物车中,则仅在刷新页面后,如: 但是,如果不刷新页面,按钮仍像以前一样带有选中图标符号 我想更改“添加到购物车”按钮,更改此产品已添加的数量,如: 这可能吗?我需要改变什么?非常感谢您的帮助。您可以使用WC-woocommerce\u-product\u-add\

当Ajax添加到购物车功能在my WooCommerce store上处于活动状态时,在Ajax添加到购物车上,首先单击它会显示一个选中的图标符号,如:

下面的代码将“添加到”按钮购物车文本更改为“Seçildi!”,如果产品已经在购物车中,则仅在刷新页面后,如:

但是,如果不刷新页面,按钮仍像以前一样带有选中图标符号

我想更改“添加到购物车”按钮,更改此产品已添加的数量,如:


这可能吗?我需要改变什么?非常感谢您的帮助。

您可以使用WC-woocommerce\u-product\u-add\u-to\u-cart\u文本操作钩子,您可以通过所有产品获得WC-cart循环,并比较路径第二个参数$prodcut对象。检查下面的代码。代码将激活theme functions.php文件

function change_add_to_cart_text_if_product_already_in_cart( $add_to_cart_text, $product ) {    
    if ( WC()->cart ) {
        $cart = WC()->cart; // Get cart
        if ( ! $cart->is_empty() ) {
            foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
                $_product_id = $cart_item['product_id'];
                if ( $product->get_id() == $_product_id ) {
                    $add_to_cart_text = '('.$cart_item['quantity'].')'.' Already in cart';
                    break;
                }
            }
        }
    }
    return $add_to_cart_text;
}
add_filter( 'woocommerce_product_add_to_cart_text', 'change_add_to_cart_text_if_product_already_in_cart', 10, 2 );
add_filter( 'woocommerce_product_single_add_to_cart_text', 'change_add_to_cart_text_if_product_already_in_cart', 10, 2 );
更新(根据OP请求,如何使用数量快速更改文本)。

add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_add_quantity_fields', 99, 2 );
function custom_add_quantity_fields($html, $product) {
    //add quantity field only to simple products
    if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {

        if ( WC()->cart ) {
            $cart = WC()->cart; // Get cart
            if ( ! $cart->is_empty() ) {
                foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
                    $_product_id = $cart_item['product_id'];
                    if ( $product->get_id() == $_product_id ) {
                        $data_product_qty = $cart_item['quantity'];
                    }else{
                        $data_product_qty = 0;
                    }
                }
            }else{
                 $data_product_qty = 0;
            }
         }

        //rewrite form code for add to cart button
        $html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
        $html .= woocommerce_quantity_input( array(), $product, false );
        $html .= '<button type="submit" data-quantity="1" data-product_id="' . $product->get_id() . '" class="button alt ajax_add_to_cart add_to_cart_button product_type_simple" data-product-qty="'.$data_product_qty.'">' . esc_html( $product->add_to_cart_text() ) . '</button>';
        $html .= '</form>';
    }
    return $html;
}   
有两种方法可以做到这一点

  • 您可以使用
    woocommerce\u loop\u add\u to\u cart\u args
    添加产品数量属性,并基于此显示

     function add_product_qty( $args, $product ){
         if ( WC()->cart ) {
             $cart = WC()->cart; // Get cart
             if ( ! $cart->is_empty() ) {
                 foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
                     $_product_id = $cart_item['product_id'];
                     if ( $product->get_id() == $_product_id ) {
                         $args['attributes']['data-product-qty'] = $cart_item['quantity'];
                     }else{
                         $args['attributes']['data-product-qty'] = 0;
                     }
                 }
             }else{
                 $args['attributes']['data-product-qty'] = 0;
             }
         }
         return $args;
     }
     add_filter( 'woocommerce_loop_add_to_cart_args', 'add_product_qty', 10, 2 );
    
     add_action( 'wp_footer', 'ajax_button_text_quick_change_js_script' );
     function ajax_button_text_quick_change_js_script() {
         ?>
         <script>
             (function($) {
    
                 $(document.body).on('click', '.ajax_add_to_cart', function(event){
                     $this = $(this);
                     var product_qty = parseInt($this.attr('data-product-qty')) + 1;
                     $this.attr('data-product-qty',product_qty);
                     var buttonText = '<span class="add_to_cart_text product-is-added">('+product_qty+') Already in cart</span><i class="cart-icon pe-7s-cart"></i>';
                     $this.html(buttonText).attr('data-tip','('+product_qty+') Already in cart');
                 });
    
             })(jQuery);
         </script>
         <?php
     }
    
  • 以下代码仅适用于OP站点。

    add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_add_quantity_fields', 99, 2 );
    function custom_add_quantity_fields($html, $product) {
        //add quantity field only to simple products
        if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
    
            if ( WC()->cart ) {
                $cart = WC()->cart; // Get cart
                if ( ! $cart->is_empty() ) {
                    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
                        $_product_id = $cart_item['product_id'];
                        if ( $product->get_id() == $_product_id ) {
                            $data_product_qty = $cart_item['quantity'];
                        }else{
                            $data_product_qty = 0;
                        }
                    }
                }else{
                     $data_product_qty = 0;
                }
             }
    
            //rewrite form code for add to cart button
            $html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
            $html .= woocommerce_quantity_input( array(), $product, false );
            $html .= '<button type="submit" data-quantity="1" data-product_id="' . $product->get_id() . '" class="button alt ajax_add_to_cart add_to_cart_button product_type_simple" data-product-qty="'.$data_product_qty.'">' . esc_html( $product->add_to_cart_text() ) . '</button>';
            $html .= '</form>';
        }
        return $html;
    }   
    
    add_过滤器('woocommerce_loop_add_to_cart_link','custom_add_quantity_fields',99,2);
    函数自定义\添加\数量\字段($html,$product){
    //仅向简单产品添加数量字段
    如果($product&&$product->is_type('simple')&&&$product->is_purchable()&&&$product->is_in_stock()&&&&!$product->is_selled_single()){
    如果(WC()->cart){
    $cart=WC()->cart;//获取购物车
    如果(!$cart->为空(){
    foreach($cart->get\u cart()作为$cart\u item\u key=>$cart\u item){
    $_product_id=$cart_item['product_id'];
    如果($product->get\U id()=$\U product\U id){
    $data\U product\U QUOTY=$cart\U item[‘数量’];
    }否则{
    $data\U product\U qty=0;
    }
    }
    }否则{
    $data\U product\U qty=0;
    }
    }
    //重写“添加到购物车”按钮的表单代码
    $html='';
    $html.=woocommerce\u quantity\u输入(数组(),$product,false);
    $html.=''.esc_html($product->add_to_cart_text())。';
    $html.='';
    }
    返回$html;
    }   
    
    测试和工作


    Thx@Bhautik,它工作得很好,但在第一次点击时,“添加到购物车”按钮仅显示checkt符号,刷新页面后,它显示(x)已在购物车中。你的测试结果一样吗?是的,我也一样。添加到购物车时是否要更改(我是说单击?)我是指单击添加到购物车按钮时,该按钮变为CHECK T符号,没有数量且已在购物车文本中。刷新页面后,我会看到Quantity和cart文本中的内容。我想在第一次单击时执行此操作。İ不需要检查T符号,我需要数量并且已经在购物车文本中。:)thx。有更多的代码可以做到这一点。您可以使用
    added_to_cart
    jQuery事件,该事件在添加到购物车后触发,您可以根据该事件进行更改。你可以在这里查看更多信息,这里你可以告诉我如何搜索,或者如果你能举个例子,我会很高兴。
    add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_add_quantity_fields', 99, 2 );
    function custom_add_quantity_fields($html, $product) {
        //add quantity field only to simple products
        if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
    
            if ( WC()->cart ) {
                $cart = WC()->cart; // Get cart
                if ( ! $cart->is_empty() ) {
                    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
                        $_product_id = $cart_item['product_id'];
                        if ( $product->get_id() == $_product_id ) {
                            $data_product_qty = $cart_item['quantity'];
                        }else{
                            $data_product_qty = 0;
                        }
                    }
                }else{
                     $data_product_qty = 0;
                }
             }
    
            //rewrite form code for add to cart button
            $html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
            $html .= woocommerce_quantity_input( array(), $product, false );
            $html .= '<button type="submit" data-quantity="1" data-product_id="' . $product->get_id() . '" class="button alt ajax_add_to_cart add_to_cart_button product_type_simple" data-product-qty="'.$data_product_qty.'">' . esc_html( $product->add_to_cart_text() ) . '</button>';
            $html .= '</form>';
        }
        return $html;
    }