我正在通过woocommerce进行电子商务,我必须做以下事情:
通过functions.php修改所有产品的价格。我创建的功能适用于所有网站的价格,除了购物车的价值。
我将这个功能放在下面:
function woo_change_price($price, $product) {
global $woocommerce, $product;
$post_id = $product->id;
$regular_price = get_post_meta( $post_id, '_regular_price', true);
$sale_price = get_post_meta( $post_id, '_sale_price', true);
$cupom_value = ($regular_price - $sale_price) / 10;
$price = $cupom_value;
return $price;
}
add_filter('woocommerce_get_price', 'woo_change_price', 99);
add_filter('woocommerce_get_sale_price', 'woo_change_price', 99);
add_filter('woocommerce_order_amount_item_subtotal', 'woo_change_price', 99);
看到我需要的是获得产品的正常价格和销售价格,并制作数学的基本帐户,减去两个并除以10.结果我设定为产品的新价格。
此功能可在所有网站中完美运行,但购物车除外。当我看到购物车时,所有值都设置为0(价格,总数,小计等)。
我发现为什么会发生这个错误,但我现在不知道如何修复它。问题是: $ product-> id 未被购物车识别,然后返回0.
我该如何解决?
谢谢!
答案 0 :(得分:0)
不确定这是否是您正在寻找的内容,但是您可以使用类似的内容在添加到购物车后修改商品的价格。
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart_object ) {
foreach ( $cart_object->cart_contents as $key => $value ) {
$post_id = $value['product_id'];
$regular_price = get_post_meta( $post_id, '_regular_price', true);
$sale_price = get_post_meta( $post_id, '_sale_price', true);
$cupom_value = ($regular_price - $sale_price) / 10;
$price = $cupom_value;
$value['data']->price = $price;
}
}
这会直接影响购物车。商品本身的价格不会改变,但购物车中商品的价格会更新,以反映您定义的价值。