Woocommerce:仅在产品页面上显示一些变化

时间:2018-06-27 11:41:56

标签: php wordpress woocommerce

我有一个Woocommerce网站,其中包含许多可变产品。这些产品具有多种颜色和尺寸选择。

我想根据访问产品的类别来限制显示哪些版本。

我曾考虑过要创建多个变量产品,但这会对库存产生影响。我需要一个变量产品,但需要该产品的多个“视图”来限制显示哪些变体。

检测父类别没有问题。我无法解决如何限制显示的变体数量。我可以使用Woocommerce过滤器woocommerce_available_variation来阻止购买某些变体,但实际上我想一起从页面中删除所有选项。

我看到了有关“不可见”和“禁用”变体的参考文档,但是我看不到如何利用这些变体。

我发现了两个过滤器woocommerce_variation_is_activewoocommerce_variation_is_visible,它们使您可以灰显或隐藏特定信息的特定变化。这仍然不允许我阻止它们一起显示。

1 个答案:

答案 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
       }
     }
}
?>

根据您的需求量身定制代码。