首页 文章

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

提问于
浏览
0

我正在通过woocommerce进行电子商务,我必须做以下事情:

通过functions.php修改所有产品的价格 . 我创建的功能适用于所有网站的价格,除了购物车的 Value .

我把这个功能放在下面:

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

    不确定这是否是您正在寻找的,但您可以使用这样的东西来修改项目的价格,一旦它们被添加到购物车 .

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

    这会直接影响购物车 . 物品本身的价格不会改变,但购物车内物品的价格将会更新,以反映您定义的 Value .

相关问题