如何通过functions.php修改woocommerce价格?

时间:2016-10-07 21:00:40

标签: php wordpress woocommerce

我正在通过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.

我该如何解决?

谢谢!

1 个答案:

答案 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;
    }
}

这会直接影响购物车。商品本身的价格不会改变,但购物车中商品的价格会更新,以反映您定义的价值。