2017-07-17 77 views
0

我在自定義選擇框編碼一組我的產品的改變基於用戶的選擇的價格。它運作良好,但現在我需要根據他們的選擇改變產品標題。變化WooCommerce可變產品稱號基於變化

基本上,如果選項1被選擇,產品名稱保持不變。但選擇了選項2,我需要在產品標題的末尾添加「-RZ」。

我不確定我是否可以在'woocommerce_before_calculate_totals'鉤子中修改價格,但如果有人知道鉤子我應該使用和代碼通過PHP訪問當前產品的標題,這將是偉大的。

這裏是改變價格,如果它是有幫助的代碼:

function calculate_core_fee($cart_object) { 
    if(!WC()->session->__isset("reload_checkout")) { 
     /* core price */ 

     //echo $additionalPrice; 
     //$additionalPrice = 100; 
     foreach ($cart_object->cart_contents as $key => $value) { 
      $product_id = $value['product_id']; 
      if(isset($value["addOn"]) && $value["addOn"] == $product_id) {     
        $additionalPrice = $value['core']; 
        /* Woocommerce 3.0 + */ 
        $orgPrice = floatval($value['data']->get_price()); 
        //echo $additionalPrice; 
        //echo $orgPrice; 
        $value['data']->set_price($orgPrice + $additionalPrice); 

      } 
     } 
    } 
} 
add_action('woocommerce_before_calculate_totals', 'calculate_core_fee', 99); 

我知道可能要得到名字,並將其存儲在一個會話變量以後使用,如果鉤子做,這是對的購物車,結帳或訂購頁面而不是單品頁面。

回答

1

是的,這是有可能在同一鉤。你可以操縱帶班WC_Productget_name()set_name()方法產品稱號。至於價格,你應該設置和獲取自定義的車字段值,使其(就像$additionalPrice = $value['core'];)。

在這裏看到一個簡單的答案相關:Changing WooCommerce cart item names

所以,你可以有類似(只是一個假的例子):

// Get your custom field cart value for the user selection 
$userSelection = $value['user_selection']; 
// Get original title 
$originalTitle = $value['data']->get_name(); 
// Conditionally set the new item title 
if($userSelection == 'option2') 
    $value['data']->set_name($originalTitle . '-RZ'); 
+0

太棒了!謝謝 –