2016-06-24 12 views
0

WordpressのWoocommerceで、必要な条件に基づいてプログラムの価格をプログラムで更新しています。以下は簡単な例です。私はそれを表示し、次にカートに追加するだけでいいです。私の問題は、ユーザーがログアウトしてログインし直すと、カートが製品の全価格を返してしまうことです。価格を間違って更新しているか、カートに正しい割引価格が設定されているかどうかを確認する良い方法があります。ここでWoocommerceのアップデート価格はカートに保存されません。セッション

価格は、私がセッションに保存しなければならなかった、カートに追加]ボタンに移行しませんので、私はのfunctions.php

add_action('woocommerce_get_price_html','pricechanger'); 
    function pricechanger($price){ 
     $theid = get_the_ID(); 
     $product = wc_get_product($theid); 
     $price = $product->price; 
     $price = //do something to the price here 

     //save the productid/price in session for cart 
     $_SESSION['pd']['$theid'] = $price; 

     add_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10, 2); 
     add_action('init', 'woocommerce_add_to_cart_action', 10); 
     add_action('init', 'woocommerce_checkout_action', 10); 

     return $price; 

    } 

に持っているものです。私はその価格をカートに送る場所は見つけていません。

add_action('woocommerce_before_calculate_totals', 'woo_add_discount'); 
function woo_add_discount() { 

    if(isset($_SESSION['pd'])) { 
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
     foreach($_SESSION['pd'] as $key => $val) { 
     if($cart_item['data']->id == $key){ 
      $cart_item['data']->set_price($val); 
     } 
     } 
    } 
    } 

} 

お願いします。 ありがとう!

+0

uggg私の唯一の解決策は、セッション終了時にカートを殺すことだと思われます。うまくいけば誰かがこれに対する答えを持っています!私は本当にあなたのカートのデータを保存する/ログアウトした後に価格をカスタマイズしたいと思う。 – Dyluck

答えて

1

私の結論はここに掲載されています。

あなたの価格変更のコードに対するこれらのフックを実行する必要があります。

add_action('woocommerce_before_calculate_totals', 'your_function_here'); 
add_action('woocommerce_before_mini_cart', 'your_function_here'); 
function your_function_here(){ 

    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 

     //do something to your price here 
     $price = 'some calculation here'; 

     //set your price 
     $cart_item['data']->price = floatval($price); 

    } 

} 

希望誰かを助けること!

関連する問題