我正在研究一种方法来显示默认的变化值为同一产品根据他的类别。例如,我卖一张卡与选项蓝色和红色。当用户来的类别一,我希望默认值是蓝色。如果他来的类别二,该值将是红色。
我找到了一个钩子woocommerce_product_default_attributes
,但是我不知道怎么用。
**注意:似乎woocommerce只识别每个产品的一个类别,即使您的产品在两个类别中。
示例(编辑):
我有一个产品**P
。
产品P
分为两类:Cat 1
和Cat 2
。
此外,产品P
有两个变量:一月六日和一月七日**
当用户输入**Cat 1
时,我希望默认值为Blue
。如果用户输入Cat 2
,则该值将为Red
**。
@LoicTheAztech*(如下)* 的答案代码有效,但是:
当我转到Cat 1
或Cat 2
时,我可以看到对于Woocommerce,产品只在Cat 1
中,即使我们可以通过这两个类别访问。
所以在一切之前,我需要解决woocommerce的问题。
2条答案
按热度按时间q1qsirdb1#
由于Woocommerce 3你可以使用**
woocommerce_product_get_default_attributes
**过滤器挂钩...所以你的代码为您的2产品类别将是这样的东西:代码在你的活动子主题(或活动主题)的function.php文件中。还没有测试,但是应该可以工作。
说明:
由于Woocommerce 3和新引入的CRUDS setter方法,当一个方法使用
get_prop()
WC_Data
方法时,可以使用基于对象类型和方法名称的动态挂钩 (基本上对于前端:“查看”上下文)...请参阅中的这一行
$value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
和中的此行
return 'woocommerce_' . $this->object_type . '_get_';
因此,过滤器挂钩是动态生成的这种方式 (其中
$this->object_type
等于'product'
):带2个参数:
$attributes
(取代$value
的属性值)$product
(替换$this
的类示例对象)...请在Woocommerce Github closed and solved issue上查看
wbgh16ku2#
新的不同的updated answer HERE,带有替换过滤器钩
在WooCommerce 3+中,过滤器钩子**
woocommerce_product_default_attributes
位于get_variation_default_attributes()
****过时的方法中,所以它并不是真正实现你想要的正确钩子。get_variation_default_attributes()
方法被get_default_attributes()
替换例如,您可以在
woocommerce_before_add_to_cart_form
**action挂接中实现您的条件函数。备注:
代码:
代码在您的活动子主题(或主题)的function.php文件中,或者也可以在任何插件文件中。
这段代码已经过测试并且可以正常工作。