php - Woocommerce 订阅:更改付款方式应该有 0 订阅费
问题描述
我试图找出一个逻辑,在 woocommerce 订阅下的客户帐户中切换付款方式时将运费设置为 0,其中 URL 包含此值
&kco-action=change-subs-payment
此代码与此处创建的代码重复 代码链接
add_action('woocommerce_cart_calculate_fees','custom_handling_fee',10,1);
function custom_handling_fee($cart){
if(!is_admin() && ! defined('DOING_AJAX') && get_query_var('cat'))
return;
if('cod' === WC()->session->get('chosen_payment_method')){
$extra_cost = 0.00;
$cart_total = $cart->cart_contents_total;
$fee = $cart_total * $extra_cost;
if($fee != 0)
$cart->add_fee('COD Charge',$fee,true);
}
}
一旦它在 url 中检测到特定的 var,它就会将运费设置为 0。我现在面临的问题是,当客户切换 woocommerce 订阅的付款方式时,他会在成功更改付款方式之前先支付运费。
解决方案
推荐阅读
- vue.js - 如何在 Webpack 中启用源映射?
- google-cloud-run - 如何允许从 Google Cloud Run 到外部 MySql 实例的出站请求
- php - RSS 阅读器适用于 LocalHost 但不适用于共享主机
- c# - 尝试通过 mciSendString (MCIERR_CANNOT_LOAD_DRIVER) 播放 mp3 文件时出现问题
- r - 澄清函数内的列表子集
- java - 如何在适配器 onBind() 中比较 2 个具有不同元素集的列表?
- android - 如何突出显示 RecyclerView 中的第一个项目并仅保持选中的 itemView 被选中?
- reactjs - 将 prop 值传递给所有嵌套的子组件
- javascript - 有什么方法可以简化这个 if/else 块?
- sockets - 在不同的线程中使用 cin 和 cout。为什么 cin 缓冲区会删除第一个字符?