重新订购时,我在尝试添加/获取自定义商品数据时遇到一些问题。
首先让我解释一下:我主要使用 WooCommerce 作为发票制作者,因此我必须进行的自定义更改之一是在每个产品中添加自定义百分比折扣字段(您也可以在购物车页面中编辑),所以我的问题是,当重新订购时,购物车商品在那里,但百分比折扣不再影响价格,如果我尝试更改百分比值,所有价格均为 0(产品价格和产品总计)。
这是我正在使用的代码:
// Add a custom field before single add to cart
add_action('woocommerce_before_add_to_cart_button', 'custom_product_price_field', 5);
function custom_product_price_field()
{
echo '<div class="custom-text text">
<p>Descuento %:</p>
<input type="text" id="custom_price" name="custom_price" value="" placeholder="e.g. 10" title="Custom Text" class="custom_price text_custom text">
</div>';
}
// Get custom field value, calculate new item price, save it as custom cart item data
add_filter('woocommerce_add_cart_item_data', 'add_custom_field_data', 20, 3);
function add_custom_field_data($cart_item_data, $product_id, $variation_id)
{
$product_id = $variation_id > 0 ? $variation_id : $product_id;
if (!isset($_POST['custom_price'])) {
return $cart_item_data;
}
$custom_price = (float) sanitize_text_field($_POST['custom_price']);
if ($custom_price > 40) {
wc_add_notice(__('El descuento debe ser menor a 40%'), 'error');
return $cart_item_data;
}
$product = wc_get_product($product_id); // The WC_Product Object
$price = (float) $product->get_price();
$cart_item_data['base_price'] = $price;
$cart_item_data['new_price'] = $price * (100 - $custom_price) / 100;
if($custom_price > 0 || !empty($custom_price))
$cart_item_data['percentage'] = $custom_price . "%";
return $cart_item_data;
}
一只名叫tom的猫