在 WooCommerce 中为具有特定产品属性术语的变体制作订单备注字段
Make order notes field required for variations with specific product attribute term in WooCommerce
我很少有具有 pa_size
和 pa_color
属性 (分类法) 的可变产品。我有 4 种尺寸(“s”、“m”、“l”和“special”)和 4 种颜色。
我的问题是,对于“特殊”尺码:客户必须在结帐页面填写订单备注,但由于它不是必填字段,他们很容易错过。
我找到了一些产品类别的代码,我已更改这些代码以处理 pa_size
分类法。使用此代码,我正在考虑为购买的具有 pa_size
属性的产品变体制作订单备注结帐字段。
这是我的代码:
function conditional_variation( $variations ) {
foreach( WC()->cart->get_cart() as $cart_item ) {
if( has_term( $variations, 'pa_size', $cart_item['product_id'] ) ) {
return true;
}
}
return false;
}
add_filter( 'woocommerce_checkout_fields' , 'make_order_notes_required_field' );
function make_order_notes_required_field( $fields ) {
$variations = array("pa_size");
if ( conditional_variation( $variations ) ) {
$fields['order']['order_comments']['required'] = true;
}
return $fields;
}
但我做不到。
我尝试了很多方法,但我无法找到一种方法让它只需要“特殊”尺寸属性项。我的意思是,如果购物车中的任何变体组合或单个产品包含“特殊”属性(黑色-特殊,蓝色-特殊仅“特殊”等)字段必须是必需的,否则(小-蓝色,红色-大仅红色等) .) 它必须是可选的。
尝试以下方法 (确保 "Special" 是 [=11] 的正确 术语名称 =] 根据变量产品的相关变体设置的分类法):
add_filter( 'woocommerce_checkout_fields' , 'make_order_notes_required_field' );
function make_order_notes_required_field( $fields ) {
$taxonomy = 'pa_size';
$term_name = 'Special';
foreach( WC()->cart->get_cart() as $cart_item ) {
if( $cart_item['data']->get_attribute($taxonomy) === $term_name ) {
$fields['order']['order_comments']['required'] = true;
break; // Stop the loop
}
}
return $fields;
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
我很少有具有 pa_size
和 pa_color
属性 (分类法) 的可变产品。我有 4 种尺寸(“s”、“m”、“l”和“special”)和 4 种颜色。
我的问题是,对于“特殊”尺码:客户必须在结帐页面填写订单备注,但由于它不是必填字段,他们很容易错过。
我找到了一些产品类别的代码,我已更改这些代码以处理 pa_size
分类法。使用此代码,我正在考虑为购买的具有 pa_size
属性的产品变体制作订单备注结帐字段。
这是我的代码:
function conditional_variation( $variations ) {
foreach( WC()->cart->get_cart() as $cart_item ) {
if( has_term( $variations, 'pa_size', $cart_item['product_id'] ) ) {
return true;
}
}
return false;
}
add_filter( 'woocommerce_checkout_fields' , 'make_order_notes_required_field' );
function make_order_notes_required_field( $fields ) {
$variations = array("pa_size");
if ( conditional_variation( $variations ) ) {
$fields['order']['order_comments']['required'] = true;
}
return $fields;
}
但我做不到。
我尝试了很多方法,但我无法找到一种方法让它只需要“特殊”尺寸属性项。我的意思是,如果购物车中的任何变体组合或单个产品包含“特殊”属性(黑色-特殊,蓝色-特殊仅“特殊”等)字段必须是必需的,否则(小-蓝色,红色-大仅红色等) .) 它必须是可选的。
尝试以下方法 (确保 "Special" 是 [=11] 的正确 术语名称 =] 根据变量产品的相关变体设置的分类法):
add_filter( 'woocommerce_checkout_fields' , 'make_order_notes_required_field' );
function make_order_notes_required_field( $fields ) {
$taxonomy = 'pa_size';
$term_name = 'Special';
foreach( WC()->cart->get_cart() as $cart_item ) {
if( $cart_item['data']->get_attribute($taxonomy) === $term_name ) {
$fields['order']['order_comments']['required'] = true;
break; // Stop the loop
}
}
return $fields;
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。