WooCommerce代码 - 动态地向购物车和结帐添加附加费

时间:2015-06-15 18:55:56

标签: wordpress woocommerce

我在我的WooCommerce购物车中添加了2个单选按钮。但是我想在选择一个而不是另一个时添加附加费,我希望它更新显示的结账数据。

我知道我可以这样做以便一直添加附加费:

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, '' );

}

但是如何根据我选择的单选按钮控制它添加或不添加?

3 个答案:

答案 0 :(得分: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, '' );
}

答案 1 :(得分: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' ); ?>

您可以使用&#34; woocommerce_cart_calculate_fees&#34;为你的主题添加金额附加金额,加上上面的AJAX将帮助你。

答案 2 :(得分:0)

我通过创建一个AJAX来处理按钮然后在PHP回调中发出WC-&gt; session-&gt;设置来设置会话变量来解决这个问题。返回后,我发出一个location.reload(),刷新页面但不清除缓存。这样当再次加载functions.php时,我在附加功能中添加了一个action_add,我可以查询会话变量以查看点击了哪个单选按钮并添加了相应的cart-&gt; add_fee。