【发布时间】:2019-02-17 14:31:20
【问题描述】:
在 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\includes\class-wc-discounts.php 在第 85 行
我想知道我是否在这里遗漏了什么,是否有人可以对此有所了解?谢谢
【问题讨论】:
-
您好,感谢您的回复,但除了我的隐藏字段之外,这是我的完整代码,所以我不确定您还想要什么其他代码。
-
期望的行为是将从隐藏字段检索到的新价格传递给 Woocommerce 购物车价格。那有意义吗?我将把它添加到问题中。
标签: php wordpress woocommerce cart price