2015-06-15 70 views
0

我已將2個單選按鈕添加到我的WooCommerce購物車。但是,我想在選擇一個附加費時添加附加費,但我希望它更新顯示的結帳數據。WooCommerce代碼 - 動態地爲購物車和結帳添加附加費

我知道我能做到這一點,添加附加費的所有時間:

add_action('woocommerce_cart_calculate_fees','woocommerce_custom_surcharge'); 

function woocommerce_custom_surcharge() { 
    global $woocommerce; 

    $surcharge = 5.32; 
    $woocommerce->cart->add_fee('Surcharge', $surcharge, true, ''); 

} 

但是如何我控制它添加此與否在此基礎上單選按鈕我選擇?

回答

0

那麼我解決了這個問題,通過創建一個AJAX來處理按鈕,然後在PHP回調中發出一個WC-> session-> set來設置會話變量。返回後,我發出一個location.reload(),刷新頁面但不清除緩存。這樣,當函數.php再次被加載時,在作爲action_add添加的附加函數中,我可以查詢會話變量以查看哪個單選按鈕被點擊並添加相應的cart-> add_fee。

1

最好的辦法是用Ajax(未測試的代碼):

<input type="radio" name"surcharge" value="5.32" class="surcharge" /> 
<script> 
$(document).ready(function() { 
    $(".surcharge").click(function(){ 
    $.ajax({ 
     url: "where_is_your.php", // Name of PHP script 
     type: "POST", 
     data: { 
      action: $(this).val(), //here you get the value 5.32 
     } 
     }).done(function(data) { 
     alert(data.message); //your success message if you want it 
     }); 
    }) 
}) 
</script> 

和你的PHP:

add_action('woocommerce_cart_calculate_fees','woocommerce_custom_surcharge'); 
$surcharge = $_POST['action']; 
function woocommerce_custom_surcharge() { 
    global $woocommerce; 
    $woocommerce->cart->add_fee('Surcharge', $surcharge, true, ''); 
} 
+0

這是接近我正在尋找。當按下單選按鈕A時,我想添加附加費,但按下單選按鈕B時,隱藏並不增加附加費。單選按鈕被添加到主題functions.php代碼 'add_action('woocommerce_checkout_update_order_meta','hear_about_us_field_update_order_meta');' – justdan0227

0
<?php 
/** 
* WooCommerce Extra Feature 
* -------------------------- 
* 
* Add custom fee to cart automatically 
* 
*/ 
function woo_add_cart_fee() { 

    global $woocommerce; 

    $woocommerce->cart->add_fee(__('Custom', 'woocommerce'), 5); 

} 
add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee'); ?> 

您可以使用 「woocommerce_cart_calculate_fees」 添加附加費錢的金額你的主題,再加上上面的AJAX將幫助你。

+0

謝謝。我知道add_fee,我已經在使用它了。問題是我必須根據所選的單選按鈕來更改add_fee數量如果選擇「A」其一個費用,如果「B」是另一個費用。 – justdan0227

+0

所以在我打電話給add_fee之後,如何讓購物車刷新並增加費用? – justdan0227

+1

我的邏輯是:你必須使用onchange jquery進行監聽,如果在帶有id和value的radio上選擇(change),然後,你將運行ajax函數來添加上述函數的費用,它不會重載頁面隊友 – Comfythemes

相關問題