… WC_Session тоже не используется. WC_session в основном используется, когда вам нужно установить значение вне элементов корзины, например, чтобы получить его для кода на основе Ajax. Например, Woocommerce использует WC_Session для хранения выбранных пользователем опций.

commerce я использовалjQuery чтобы рассчитать заказную цену на страницах одного товара, теперь нужно передать это значение в корзину.

Желаемое поведение - передать новую цену, извлеченную из скрытого поля, в цену товара в корзине.

Вот мой фактический код:

// Hidden input field in single product page
add_action( 'woocommerce_before_add_to_cart_button', 'custom_hidden_product_field', 11, 0 );
function custom_hidden_product_field() {
    echo '<input type="hidden" id="hidden_field" name="custom_price" class="custom_price" value="">';
}


// The code to pass this data to the cart:
add_action( 'woocommerce_add_cart_item_data', 'save_custom_fields_data_to_cart', 10, 2 );
function save_custom_fields_data_to_cart( $cart_item_data, $product_id ) {

    if( ! empty( $_REQUEST['custom_price'] ) ) {
        // Set the custom data in the cart item
        $cart_item_data['custom_data']['custom_price'] = $_REQUEST['custom_price'];
        $data = array( 'custom_price' => $_REQUEST['custom_price'] );

        // below statement make sure every add to cart action as unique line item
        $cart_item_data['custom_data']['unique_key'] = md5( microtime().rand() );
        WC()->session->set( 'custom_data', $data );
    }
    return $cart_item_data;
}

И проверить оба$data а также$cart_item_data чтобы увидеть, что они оба возвращаютcustom_price Данные, которые рассчитываются на странице.

Тем не менее, я иду, чтобы просмотреть корзину, и значение позиции по-прежнему равно 0.

Я установилvar равныйWC()->session->set( 'custom_data', $data ); а потомvar_dump проверить это, но это возвращаетNULL что может быть именно тем, что он возвращает, я не совсем уверен, потому что я никогда не использовал его.

Я должен также добавить, что у меня естьregular_price в бэкэнде продукта установлено значение 0. Когда я стираю это (и оставляю это поле пустым), я получаю сообщение об ошибке:

Предупреждение: нечисловое значение, обнаруженное в C: \ xampp \ htdocs \ my-Transfer-source \ wp-content \ plugins \ woocommerce \ includes \ class-wc-discount.php в строке 85

Мне интересно, если я что-то упустил здесь, и если бы кто-то мог пролить свет на это? Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос