制作WooCommerce中具有特定产品属性术语的变体所需的订单注释字段



我有一些具有pa_sizepa_color属性的变体产品(分类法(。我有4种尺寸("s"、"m"、"l"one_answers"special"(和4种颜色。

我的问题是;特别的";size:客户必须在结账页面填写订单备注,但由于这不是必填字段,他们很容易错过。

我发现了一些产品类别的代码,这些代码已更改为处理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">是基于可变产品的相关变体设置的pa_size分类法的正确术语名称(

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文件中。测试并工作。

最新更新