首页 > 后端开发 > php教程 > 如何以编程方式更改 WooCommerce 购物车中的产品价格?

如何以编程方式更改 WooCommerce 购物车中的产品价格?

DDD
发布: 2024-11-29 15:42:14
原创
286 人浏览过

How to Programmatically Change Product Prices in a WooCommerce Cart?

更改 WooCommerce 3 购物车中的产品价格

要修改购物车中的产品价格,您可以使用以下命令代码:

// Set custom cart item price
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 1000, 1);

// Handle mini cart custom item price (Optional)
if ( ! is_admin() || defined( 'DOING_AJAX' ) ) :
    add_filter( 'woocommerce_cart_item_price', 'filter_cart_item_price', 10, 3 );
endif;

// Respective Functions
function add_custom_price( $cart ) {
   // Required for WC 3.0+
   if ( is_admin() && ! defined( 'DOING_AJAX' ) )
       return;

   // Avoid hook repetition
   if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
       return;

   // Loop through cart items
   foreach ( $cart->get_cart() as $cart_item ) {
       $cart_item['data']->set_price( 40 );
   }
}

function filter_cart_item_price( $price_html, $cart_item, $cart_item_key ) {
   if ( isset( $cart_item['custom_price'] ) ) {
       $args = array( 'price' => 40 );

       if ( WC()->cart->display_prices_including_tax() ) {
           $product_price = wc_get_price_including_tax( $cart_item['data'], $args );
       } else {
           $product_price = wc_get_price_excluding_tax( $cart_item['data'], $args );
       }
       return wc_price( $product_price );
   }
   return $price_html;
}
登录后复制

注释:

  • 使用 woocommerce_before_calculate_totals 挂钩而不是 woocommerce_before_shipping_calculator。
  • 使用 WC_Cart::get_cart()获取购物车的方法商品。
  • 使用 WC_Product::set_price() 方法设置每个购物车商品的价格。

其他信息:

  • add_custom_price()函数应放置在WordPress的functions.php文件中主题。
  • 要使其与 WooCommerce 5.1.x 及更高版本兼容,请将 add_custom_price() 函数中的挂钩优先级增加到 1000 甚至 2000(如有必要)。
  • 如果使用以下插件或自定义项可能会与价格计算冲突,请同时提高 hook 优先级。

以上是如何以编程方式更改 WooCommerce 购物车中的产品价格?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板