2017-07-17 80 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

太棒了!谢谢 –