在 WooCommerce 中为具有特定产品属性术语的变体制作订单备注字段

Make order notes field required for variations with specific product attribute term in WooCommerce

我很少有具有 pa_sizepa_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 文件。已测试并有效。