在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中缺货产品的自动无索引