【问题标题】:How to modify the woocommerce price via functions.php?如何通过functions.php修改woocommerce价格?
【发布时间】:2016-10-07 21:00:39
【问题描述】:

我正在使用 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。

我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    不确定这是否是您要查找的内容,但您可以在商品添加到购物车后使用类似的方法来修改商品的价格。

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 1970-01-01
      • 2018-01-30
      • 2017-08-07
      • 2021-11-23
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 2022-12-03
      相关资源
      最近更新 更多