Изменение цены при добавлении в корзину умножая на значение атрибута woocommerce

Пытаюсь изменить стоимость товара при добавлении в корзину, код работает не так как нужно. При добавлении товара в корзину у которого нет атрибута pa_kolichestvo, то цена меняется у всех товаров в корзине на обычную. В чем может быть причина?

function get_unit($product_id){
    global $product;
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $_product   = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
        $atribute = $_product->get_attribute( 'pa_kolichestvo' );
    }
    $term_meta_pa = str_replace(' ', '', $atribute);
    $term_meta_pa = str_replace(',','.',$term_meta_pa);
    $term_meta_m2 = strpos($term_meta_pa, 'м2');
    if ($term_meta_m2 !== false || $term_meta_m2 !== '') {
        $term_meta_content = strtok($term_meta_pa, 'м');
    }
    if((float)$term_meta_content>0){
        return (float)$term_meta_content;
    }else{
        return false;
    }
}

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {
    foreach ( $cart_object->cart_contents as $key => $value ) {
        if($unit=get_unit($value['product_id'])){
            $value['data']->set_price($unit*$value['data']->price);
            $value['data']->set_regular_price($unit*$value['data']->regular_price);
            if((int)$value['data']->sale_price > 0 ){
                $value['data']->set_sale_price($unit*$value['data']->sale_price);
            }
        }
    }
}

Ответы (1 шт):

Автор решения: Makissm

Заработало, не сразу заметил лишнюю строку)))

function get_unit($product_id){
    global $product;
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $_product   = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
        $atribute = $_product->get_attribute( 'pa_kolichestvo' );
    }
    $term_meta_pa = str_replace(' ', '', $atribute);
    $term_meta_pa = str_replace(',','.',$term_meta_pa);
    $term_meta_m2 = strpos($term_meta_pa, 'м2');
    if ($term_meta_m2 !== false || $term_meta_m2 !== '') {
        $term_meta_content = strtok($term_meta_pa, 'м');
    }
    if((float)$term_meta_content>0){
        return (float)$term_meta_content;
    }else{
        return false;
    }
}

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {
    foreach ( $cart_object->cart_contents as $key => $value ) {
        if($unit=get_unit($value['product_id'])){
            //$value['data']->set_price($unit*$value['data']->price);
            $value['data']->set_regular_price($unit*$value['data']->regular_price);
            if((int)$value['data']->sale_price > 0 ){
                $value['data']->set_sale_price($unit*$value['data']->sale_price);
            }
        }
    }
}
→ Ссылка