簡體   English   中英

更改購物車總數后,Woocommerce 無法更新訂單審核

[英]Woocommerce can't update order review after change cart totals

我使用以下代碼更改了 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'];

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM