从 Woocommerce 3 中的产品隐藏输入字段设置自定义购物车商品价格

问题描述 投票:0回答:0

在 Woocommerce 中,我使用

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\include

php wordpress woocommerce cart price
© www.soinside.com 2019 - 2024. All rights reserved.