在WooCommerce中产品缺货时更改单个添加到购物车文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WooCommerce中产品缺货时更改单个添加到购物车文本相关的知识,希望对你有一定的参考价值。

在Woocommerce中,我试图在产品缺货时将单个产品页面上的“添加到购物车”添加到“缺货”,以获取简单的产品和可变产品的产品变体。

我们目前没有使用任何类型的库存管理,因为我们所有的产品都是手工制作的,我们手动设置库存状态。

有没有可能实现这一目标的方法?

答案

对于除变量产品之外的所有产品,非常简单......但对于可变产品及其变体,它需要更多代码和javascript / jQuery的使用。

因此,当当前产品缺货时,即使对于可变产品的选定产品变体,以下代码也会将购物车文本添加到“缺货”:

// For all products except variable product
add_filter( 'woocommerce_product_single_add_to_cart_text', 'product_single_add_to_cart_text_filter_callback', 20, 2 );
function product_single_add_to_cart_text_filter_callback( $button_text, $product ) 
    if( ! $product->is_in_stock() && ! $product->is_type('variable') ) 
        $button_text = __("Out of stock", "woocommerce");
    
    return $button_text;


// For all product variations (on a variable product)
add_action( 'woocommerce_after_add_to_cart_button', 'after_add_to_cart_button_action_callback', 0 );
function after_add_to_cart_button_action_callback() 
    global $product;

    if( $product->is_type('variable') ) :

    $data = [];

    // Loop through variation Ids
    foreach( $product->get_visible_children() as $variation_id )
        $variation = wc_get_product( $variation_id );
        $data[$variation_id] = $variation->is_in_stock();
    

    $outofstock_text = __("Out of Stock", "woocommerce");
    ?>
    <script type="text/javascript">
    jQuery(function($)
        var b = 'button.single_add_to_cart_button',
            t = $(b).text();

        $('form.variations_form').on('show_variation hide_variation found_variation', function()
            $.each(<?php echo json_encode($data); ?>, function(j, r)
                var i = $('input[name="variation_id"]').val();
                if(j == i && i != 0 && !r ) 
                    $(b).html('<?php echo $outofstock_text; ?>');
                    return false;
                 else 
                    $(b).html(t);
                
            );
        );
    );
    </script>
    <?php
    endif;

代码位于活动子主题(或活动主题)的function.php文件中。经过测试和工作。

以上是关于在WooCommerce中产品缺货时更改单个添加到购物车文本的主要内容,如果未能解决你的问题,请参考以下文章

在 Woocommerce 中使用自定义元数据隐藏“缺货”产品

Wordpress Woocommerce 将所有产品更改为缺货

woocommerce wordpress中缺货产品的自动无索引

当 WooCommerce 档案中的产品缺货时删除自定义数量字段

在 Woocommerce 上添加单个产品订阅时的付款问题

当订单中有缺货商品时,在 WooCommerce 电子邮件通知中显示消息