我有一个Woocommerce网站,其中包含许多可变产品。这些产品具有多种颜色和尺寸选择。
我想根据访问产品的类别来限制显示哪些版本。
我曾考虑过要创建多个变量产品,但这会对库存产生影响。我需要一个变量产品,但需要该产品的多个“视图”来限制显示哪些变体。
检测父类别没有问题。我无法解决如何限制显示的变体数量。我可以使用Woocommerce过滤器woocommerce_available_variation
来阻止购买某些变体,但实际上我想一起从页面中删除所有选项。
我看到了有关“不可见”和“禁用”变体的参考文档,但是我看不到如何利用这些变体。
我发现了两个过滤器woocommerce_variation_is_active
和woocommerce_variation_is_visible
,它们使您可以灰显或隐藏特定信息的特定变化。这仍然不允许我阻止它们一起显示。
答案 0 :(得分:1)
我的客户要求进行类似的操作,我所做的工作是
我的模板中有一个woocommerce文件夹,仅可以覆盖我需要的特定php文件,我想您可以或已经添加了它。
然后负责显示变量选择字段的文件位于:
/ woocommerce /单个产品/添加到购物车/variable.php
因此,我们看到一个循环,为每个属性绘制选择。
您希望在将不需要的字段取消设置之前将其传递给绘制它的“ wc_dropdown_variation_attribute_options”函数。
这是您(大约)需要做的事情:
<?php foreach ( $attributes as $attribute_name => $options ) :
// you want to target shirts category
if ( is_product() && has_term( 'shirts', 'product_cat' ) {
// you don't want a whole attribute displayed
if ( $attribute_name == 'Colour'){
unset($attribute_name);
}
}
// if you don't want few specific items then
if ( $attribute_name == 'Sizes'){ // color or size
$options_temp = $options;
foreach ( $options_temp as $key => $option )
{
if ($option = 'XXL'){
unset($options[$key]); // unset that option from REAL array
}
}
}
?>
根据您的需求量身定制代码。