我一直在到处找,我似乎找不到一个解决一个非常简单的问题。我有一个Woocommerce商店,我想向用户显示一个消息“缺货”旁边的变化,如果它是缺货。我不希望它变灰,我希望用户能够选择它,以便他们可以查看价格,如果他们愿意。我在网上找到的大多数代码片段只有在产品有一个变体时才起作用,但我需要它至少有两个变体。我的网站销售移动的设备,所以例如:
如果用户选择存储为64 GB,则颜色列表会更新,显示64 GB中哪些颜色缺货。如果所有颜色都缺货,则在64 GB旁边也会显示“缺货”。
如果先选择颜色,然后选择存储-然后用缺货的颜色更新颜色列表。
有人能帮我吗?想让这个工作起来简直是疯了。下面的代码可以用我上面提到的方法来灰化缺货产品(它适用于多种产品),但是我不知道如何修改它来适应上面提到的用例。
add_filter( 'woocommerce_variation_is_active', 'grey_out_variations_when_out_of_stock', 10, 2 );
function grey_out_variations_when_out_of_stock( $grey_out, $variation ){
if ( ! $variation->is_in_stock() ){
return false;
}else{
print_r($option_class);
return $term_name . ' - Out of Stock';;
}
}
2条答案
按热度按时间pobjuy321#
仅当选择了除一个属性之外的所有属性时,才能检查产品变型的可用性,而不能在此之前检查。
所有必要的数据都显示在产品页面上,因此您可以使用jQuery脚本来处理它。
在变体表单中,
data-product_variations
属性包含一个数组,其中包含产品变体的所有详细信息(变体ID、库存状态、所使用的属性等)。然后,您可以在所选属性和可能的产品变化之间进行比较。
这个想法是这样的:
1.检查产品页面上是否有多个属性(下拉列表)
1.如果已选择除一个属性之外的所有属性(下拉列表),则获取选定选项的属性slug和属性值
1.它将它们与每个单一变体使用的属性进行比较,如果所选属性相同,则获取要选择的最后一个属性的库存状态
1.将文本 “Out of stock” 添加到产品变体没有库存的每个选项中。为此,它将使用
woocommerce_update_variation_values
事件,该事件在通过 AJAX 更新选项后触发(否则更改将被覆盖)以下代码将适用于变量产品页面中的2个或更多属性(下拉列表)。
结果
相关答案
jxct1oxe2#