@MisTFoR

Как обновить код, после подсчет стоимости?

Здравствуйте!
Я встроил на страницу товара код, который подсчитывает сумму (скину ниже).
Все работает, только проблема в том - что сама сумма в карточке товара не обновляется.
add_filter( 'woocommerce_add_cart_item_data', 'calculate_custom_cart_item_prices', 30, 3 );
function calculate_custom_cart_item_prices( $cart_item_data, $product_id, $variation_id ) {
    if ( isset($_POST['width']) && isset($_POST['height']) ) {
        $the_id = $variation_id > 0 ? $variation_id : $product_id;

        $product = wc_get_product( $the_id ); // Get the WC_Product object
        $product_price = (float) $product->get_price(); // Get the product price

        $width  = (float) sanitize_text_field( $_POST['width'] );
        $height = (float) sanitize_text_field( $_POST['height'] );

        $new_price = $width * $height * $product_price; // Calculated price

        $cart_item_data['calculated-price'] = $new_price; // Save this price as custom data
    }
    return $cart_item_data;
}

add_action( 'woocommerce_before_calculate_totals', 'set_calculated_cart_item_price', 20, 1 );
function set_calculated_cart_item_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach ( $cart->get_cart() as $cart_item ){
        if( ! empty( $cart_item['calculated-price'] ) ){
            // Set the calculated item price (if there is one)
            $cart_item['data']->set_price( $cart_item['calculated-price'] );
        }
    }
}

add_filter( 'woocommerce_cart_item_subtotal', 'update_with_custom_details', 10, 3 ); 
function update_with_custom_details( $subtotal, $cart_item, $cart_item_key ) {
     $subtotal =" £".$cart_item['line_total'];
     return $subtotal;
}

Вывод самой формы (вставлю навсякий случай):
add_action( 'woocommerce_before_add_to_cart_button', 'add_gift_wrap_field' );
function add_gift_wrap_field() {
    global $product;
    // The fake calculated price
    ?>
        <div class="form_inproduct">
            <h2>1. Укажите размер стены</h2>
            <div class="block">
                <p>Длина от стены до стены</p>
                <input type="text" id="user-width" name="width" value=""><br>
            </div>
            <div class="block">
                <p>Высота от пола до потолка</p>
                <input type="text" id="user-height" name="height" value="">
            </div>
        </div><br>
    <?php
}
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы