2015-05-26 95 views
1

我目前排空,並增加了產品的用戶購物車訪問該網站的時候 - 因爲他們將永遠只有一個單品(捐贈),像這樣:WooCommerce:設定價格編程

function add_donation_to_cart() { 
    global $woocommerce; 
    $woocommerce->cart->empty_cart(); 
    $woocommerce->cart->add_to_cart('195', 1, null, null, null); 
} 

我使用自定義表單獲取$_POST信息 - 金額將過帳到捐贈頁面,實際上是已經包含產品的用戶購物車。自定義金額在下面的功能中用於更改價格。價格在購物車中,結帳頁面以及重定向的支付網關(在重定向頁面本身內)中均正確顯示。

但是,只要您重定向,woocommerce就會創建一個訂單,並將其標記爲「處理」。訂單上顯示的金額不正確。

我已經習慣了更改價格的功能顯示如下:

add_action('woocommerce_before_calculate_totals', 'add_custom_total_price'); 

function add_custom_total_price($cart_object) 
{ 
    session_start(); 
    global $woocommerce; 

    $custom_price = 100; 

    if($_POST) 
    { 
     if(!empty($_POST['totalValue'])) 
     { 
      $theVariable = str_replace(' ', '', $_POST['totalValue']); 

      if(is_numeric($theVariable)) 
      { 
       $custom_price = $theVariable; 
       $_SESSION['customDonationValue'] = $custom_price; 
      } 
      else 
      { 
       $custom_price = 100; 
      } 
     } 
    } 
    else if(!empty($_SESSION['customDonationValue'])) 
    { 
     $custom_price = $_SESSION['customDonationValue']; 
    } 
    else 
    { 
     $custom_price = 100; 
    } 

    var_dump($_SESSION['customDonationValue']); 

    foreach ($cart_object->cart_contents as $key => $value) 
    { 
     $value['data']->price = $custom_price; 
    } 
} 

現在我不能完全肯定,如果有事情做與我的if語句,但價格總是錯誤地設置爲100即使產品價格設置爲0.

任何幫助或見解將不勝感激!

回答

1

函數按預期工作,它實際上是if語句不正確。我檢查$_POST,這是存在的,所以$_SESSION存儲的金額從未重新分配,因爲點擊結帳後的自定義價格(在這種情況下POST導致問題)。我已將其更改爲如下所示:

add_action('woocommerce_before_calculate_totals', 'add_custom_total_price'); 

function add_custom_total_price($cart_object) { 
    session_start(); 
    global $woocommerce; 

    $custom_price = 100; 

    if(!empty($_POST['totalValue'])) 
    { 
     $theVariable = str_replace(' ', '', $_POST['totalValue']); 

     if(is_numeric($theVariable)) 
     { 
      $custom_price = $theVariable; 
      $_SESSION['customDonationValue'] = $custom_price; 
     } 
     else 
     { 
      $custom_price = 100; 
     } 
    } 
    else if(!empty($_SESSION['customDonationValue'])) 
    { 
     $custom_price = $_SESSION['customDonationValue']; 
    } 
    else 
    { 
     $custom_price = 50; 
    } 

    foreach ($cart_object->cart_contents as $key => $value) { 
     $value['data']->price = $custom_price; 
    } 
} 

如果需要,請務必編輯您的付款模塊!