简体   繁体   English

在WooCommerce中添加到购物车后,重新标记“添加到购物车”按钮

[英]Relabel “add to cart” button after add to cart in WooCommerce

I'd like to relabel my add to cart button after click on it and add one item to cart into add one more to cart . 单击后,我想重新标记“ 添加到购物车”按钮,然后将一项添加到购物车, 再添加到购物车中

Is this possible? 这可能吗?

I have Child-Theme function.php with a second go to cart button and this is working. 我有Child-Theme function.php,其中有第二个转到购物车按钮,并且可以正常工作。

But I don't know how to solve this re-label after one item has been added to cart (shop only sells one item with different sizes). 但我不知道在将一件商品添加到购物车后如何解决此重新标记(商店仅出售一件尺寸不同的商品)。 I hope that I am clear. 我希望我很清楚。

Here is my code: 这是我的代码:

add_filter( 'woocommerce_product_add_to_cart_text', 
'customizing_add_to_cart_button_text', 10, 2 );
add_filter( 'woocommerce_product_single_add_to_cart_text', 
'customizing_add_to_cart_button_text', 10, 2 );
function customizing_add_to_cart_button_text( $button_text, $product ) 
{

if ( WC()->cart->get_cart_contents_count() ) 
return __( 'Add one more to cart', 'woocommerce' );
} else {
return __( 'Add to cart ', 'woocommerce' );
}

UPDATE: Below you will find the correct conditions to make this relabeling working: 更新:在下面,您将找到使此重新标记正常工作的正确条件:

add_filter( 'woocommerce_product_add_to_cart_text', 'customizing_add_to_cart_button_text', 10, 2 );
add_filter( 'woocommerce_product_single_add_to_cart_text', 'customizing_add_to_cart_button_text', 10, 2 );
function customizing_add_to_cart_button_text( $button_text, $product )
{
    $is_in_cart = false;

    foreach ( WC()->cart->get_cart() as $cart_item )
       if ( $cart_item['product_id'] == $product->get_id() ) {
           $is_in_cart = true;
           break;
       }

    if( $is_in_cart )
        $button_text = __( 'Add one more to cart', 'woocommerce' );

    return $button_text;
}

Code goes in function.php file of your active child theme (or theme) or also in any plugin file. 代码在您的活动子主题(或主题)的function.php文件中,或者在任何插件文件中。

Tested and works. 经过测试和工作。


if you have enabled Ajax, for NON variable products on archives pages (like shop pages or product category pages) and you want to get this live event, you should add this too: 如果启用了Ajax,则对于归档页面 (例如商店页面或产品类别页面) 上的NON可变产品,并且想要获取此实时事件,也应该添加以下内容:

add_action('wp_footer','custom_jquery_add_to_cart_script');
function custom_jquery_add_to_cart_script(){
    if ( is_shop() || is_product_category() || is_product_tag() ): // Only for archives pages
        $new_text = __( 'Add one more to cart', 'woocommerce' );
        ?>
            <script type="text/javascript">
                // Ready state
                (function($){
                    $('a.add_to_cart_button').click( function(){
                        $this = $(this);
                        $( document.body ).on( 'added_to_cart', function(){
                            $($this).text('<?php echo $new_text; ?>');
                            console.log('EVENT: added_to_cart');
                        });
                    });

                })(jQuery); // "jQuery" Working with WP (added the $ alias as argument)
            </script>
        <?php
    endif;
}

Code goes in function.php file of your active child theme (or theme) or also in any plugin file. 代码在您的活动子主题(或主题)的function.php文件中,或者在任何插件文件中。

Tested and works. 经过测试和工作。

Add a add-to-cart.php to your theme/woocommerce/loop folder. 将add-to-cart.php添加到您的theme / woocommerce / loop文件夹中。 Then add the code below before the sprintf button function. 然后在sprintf按钮功能之前添加以下代码。

global $woocommerce;

$items = $woocommerce->cart->get_cart();
$inCart = false;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
   if($values['product_id'] == $product->id && $values['quantity'] > 1){
       $inCart = true;
       break;
   }
}

$buttonText = $inCart?'add one more':'add to cart';

Change the last line in the sprintf function to 将sprintf函数的最后一行更改为

esc_html( ( !empty( $product_addons ) )?'Select options':$buttonText )

You might need to refine this if you switch on the Ajax cart 如果打开Ajax购物车,则可能需要优化此设置

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在Woocommerce中单击后,将“添加到购物车”按钮更改为“查看购物车”按钮 - Change Add to Cart Button to View Cart Button after click in Woocommerce Woocommerce 添加到购物车按钮和购物车小部件 - Translate Woocommerce Add to cart button & Cart widget woocommerce-删除“添加到购物车”按钮 - woocommerce - Remove “Add to cart” button WooCommerce仅添加到购物车按钮 - WooCommerce add to cart button only 在“添加到购物车”按钮后添加个性化内容? Woocommerce - Add personalized content after the “Add to Cart” button? Woocommerce 隐藏添加到购物车按钮,并在Woocommerce中添加自定义内容 - Hide add to cart button and add custom content after it in Woocommerce 自定义添加到购物车按钮,将多个产品添加到购物车中,数量:woocommerce - Custom add to cart button to add multiple product into cart with quantity :woocommerce 如果产品在购物车中,则在woocommerce中添加类以添加到购物车按钮 - if product is in cart add class to add to cart button in woocommerce 删除Woocommerce中的“添加到购物车”通知并更改“添加到购物车”按钮 - Remove add to cart notice and change “add to cart” button in Woocommerce 在 WooCommerce 中添加到购物车后更改自定义 Ajax 添加到购物车按钮文本 - Change custom Ajax Add to Cart button text after add to cart in WooCommerce
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM