gpt4 book ai didi

php - Woocommerce:以编程方式更新购物车中的项目

转载 作者:行者123 更新时间:2023-12-04 18:06:56 25 4
gpt4 key购买 nike

我需要以编程方式动态更改购物车中商品的价格。

我已经尝试了 Woocommerce 操作 Hook 、购物车和 session 对象的不同组合,但似乎没有什么能奏效。我认为这不会那么具有挑战性。

add_action( 'woocommerce_before_calculate_totals', 'change_cart_item_price' );

function change_cart_item_price( $cart_object ) {

foreach ( $cart_object->cart_contents as $key => $value ) {

if( 123 == $value['data']->id ) {

$new_price = function_to_get_new_price( $value, get_current_user_id( ) );
$value['data']->price = $new_price;
}
}
}

上述代码仅在结帐页面或更新购物车时更改每件商品的价格(即:从购物车中删除商品时调用 Hook ),但不是无限期的。

我正在使用 Woocommerce Gravity Forms 插件。我有一个特别的产品,将被给定用户多次订购。用户将获得 5 次免费,仅需运费,超过 5 次的每件将收取 20 美元。我有这么多编码和功能,带有动态填充字段的重力形式 Hook 。运输特定于重力形式内的字段,因此我将计算留给重力形式。

我的问题是,如果用户从他们的订单中减少了该产品的数量(从购物车中删除了一件商品),它应该重新计算购物车中同一产品的每件商品的价格,否则他们可能被多收了(以前是第 6 位的商品现在是第 4 位,但价格保持不变,这是不应该的)

因此,每次从购物车中移除商品时,我都想根据该特定产品的数量重新计算购物车中每件商品的价格。

--- 编辑 ---

上面的代码有效,但我意识到问题一定是我用来显示价格的自定义循环...

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$_product = $cart_item['data'];
if( 123 == $_product->post->ID ) {
$price_not_updated = $cart_item['data']->price;
}
}

最佳答案

我想通了...我查看了 woocommerce 购物车文档,基本上意识到我得到的价格尚未计算。因此,在运行循环之前,我必须执行最初 Hook 的操作以更改价格。

感谢您的帮助!

function getUpdatedCartPrices() {

do_action( 'woocommerce_before_calculate_totals', WC()->cart );

$horray_updated_prices_works = array();

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$_product = $cart_item['data'];
if( 123 == $_product->post->ID ) {

$horray_updated_prices_works[] = $cart_item['data']->price;

}
}

}

关于php - Woocommerce:以编程方式更新购物车中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24132033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com