我正在研究根据他所属的类别显示SAME产品的默认变化值的方法 . 例如,我卖了一张带蓝色和红色选项的卡片 . 当用户来到类别ONE时,我希望默认值为蓝色 . 如果他来自类别TWO,则该值将为红色 .
我找到了一个挂钩 woocommerce_product_default_attributes
,但我不知道如何使用它 .
Note : 即使您的产品属于两类,woocommerce似乎也只能识别每个产品的一个类别 .
Example (编辑):
我有一个产品 P .
产品 P 分为两类: Cat 1
和 Cat 2
.
此外,产品 P 有两个变量: Blue & Red
当用户来自 Cat 1 时,我希望默认值为 Blue . 如果他来自 Cat 2 ,则该值将为 Red .
The answer code of @LoicTheAztech (下面)有效,但是:
当我去Cat 1或Cat 2时,我可以看到,对于Woocommerce,该产品仅在Cat 1中,即使我们可以访问这两个类别 .
所以在一切之前,我需要解决woocommerce问题 .
2 回答
从Woocommerce 3开始,你可以使用 woocommerce_product_get_default_attributes 过滤钩...所以你的2个产品类别的代码将是这样的:
代码位于活动子主题(或活动主题)的function.php文件中 . 尚未测试,但它应该工作 .
Explanations:
See this line $value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this ); in
and this linereturn 'woocommerce_' . $this->object_type . 'get'; in
所以 the filter hook is dynamically made 这样(其中
$this->object_type
等于'product'
):有2个参数:
$attributes
(替换$value
的属性值)$product
(替换$this
的类实例对象)...在Woocommerce Github closed and solved issue上看到它
例如,您可以在 woocommerce_before_add_to_cart_form 动作钩子中实现条件函数 .
代码:
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中 .
此代码经过测试并可以使用 .