php - 更改购物车总数后,Woocommerce 无法更新订单评论
问题描述
我已经使用以下代码更改了 Woocommerce 上的购物车总数,现在结帐页面特别是 update_order_review 函数出现问题
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_object )
{
if (is_admin() && ! defined( 'DOING_AJAX' ))
{
return;
}
if (did_action('woocommerce_before_calculate_totals' ) >= 2)
{
return;
}
foreach($cart_object->get_cart() as $cart_item )
{
## Price calculation ##
$price = $cart_item['data']->price*$cart_item['adult_add_on'] + $cart_item['data']->price*$cart_item['child_add_on'] + $cart_item['data']->price*0.75*$cart_item['infant_add_on'];
## Set the price with WooCommerce compatibility ##
if(version_compare( WC_VERSION, '3.0', '<' ))
{
$cart_item['data']->price = $price; // Before WC 3.0
}
else
{
$cart_item['data']->set_price( $price ); // WC 3.0+
}
}
}
我知道我需要多一步来更改一些代码,因为当我删除该功能时,woocommerce 可以更新订单审核。
我正进入(状态wc_ajax=update_order_review 502 (Bad Gateway)
任何人都可以帮我解决问题。谢谢你。
解决方案
您可能会收到服务器错误,因为此代码不够谨慎:
$price = $cart_item['data']->price*$cart_item['adult_add_on'] + $cart_item['data']->price*$cart_item['child_add_on'] + $cart_item['data']->price*0.75*$cart_item['infant_add_on'];
也许首先尝试确保数组具有您的自定义字段:
if ( !empty($cart_item['adult_add_on']) && !empty($cart_item['child_add_on']) && !empty($cart_item['infant_add_on']) ) {
$price = $cart_item['data']->price*$cart_item['adult_add_on'] + $cart_item['data']->price*$cart_item['child_add_on'] + $cart_item['data']->price*0.75*$cart_item['infant_add_on'];
}
推荐阅读
- python-3.x - 如何计算两个字符串列表之间的杰卡德相似度距离
- arrays - TypeScript 过滤器数组匹配正则表达式
- sql - 如何编写 SQL 查询以删除路径的第一个元素(第一个字符)
- python - 在 Python 中的 DataFrame 中处理
- javascript - 为什么这个特定的 zIndex 不起作用?
- algorithm - 生成区间关系组合的算法
- swift - “键'root'的值是意外的类'NSArray'”在UserDefault,Swift中检索对象数组时出错
- java - 我的 JButton 对 ActionListener 和 actionPerformed 没有反应
- r - 网格单元内的采样点数
- android - 在 Flutter 中保留方向更改时的 TextField 值