2017-05-17 7 views
0

私はこの機能を持っており、私はそれをwoocommerce 3で動作させる必要があります。これは、2.6で完璧に動作します*woocommerce_before_calculate_totals in woocommerce v3。*

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 

    global $woocommerce; 

    $cart_item_meta['estimated_fare'] = WC()->session->get('estimated_fare'); 


    $custom_price = $cart_item_meta['estimated_fare'] ; // This will be your custome price 
    $target_product_id = get_option('stern_taxi_fare_product_id_wc'); 
    foreach ($cart_object->cart_contents as $key => $value) { 
     if ($value['product_id'] == $target_product_id) { 
      $value['data']->price = $custom_price; 
     } 
    } 
} 

私はこの試みた:。

add_action('woocommerce_before_calculate_totals', 'add_custom_price', 10 , 2); 

function add_custom_price($cart_obj) { 

    global $woocommerce; 
    if (is_admin() && ! defined('DOING_AJAX')) 
     return; 

    $cart_item_meta['estimated_fare'] = WC()->session->get('estimated_fare'); 


    $custom_price = $cart_item_meta['estimated_fare'] ; // This will be your custome price 
    $target_product_id = get_option('stern_taxi_fare_product_id_wc'); 
    foreach ($cart_obj->get_cart as $key => $value) { 
     if ($value['product_id'] == 20) { // $target_product_id) { 
      $value['data']->set_price = $custom_price; 
     } 

    } 
} 

をするが、そのはまだ動作していないと私はカートで0.00価格を得ます。 これを修正する方法はありますか?あなたがset_price()機能を使用する必要がwoocommerce最新バージョン(3.0.1)では、事前

答えて

1

のthnx。だから、あなたのケースでは、あなたが$value['data']->set_price($custom_price);

にこのライン$value['data']->price=$custom_price;を変更する必要がありますあなたは間違ってそれを試してみてください - >Wrong

+0

あなたは私の第二の引用に見るように、私はそれを試してみましたが、機能はまだあなたがしようとした –

+0

働いたが間違っていません、私は画面が短く追加されていることを確認してください。 – shojibur

+0

@ニコス・ジアカマノリス、あなたの最初のコードを使用してください。そして、 '$ value ['data'] - > set_price($ custom_price);を使って、$ value ['data'] - > price = $ custom_price; – Reigel