【发布时间】:2020-08-12 09:46:36
【问题描述】:
在我的 WooCommerce 网站上,如果您选择货到付款作为付款方式,我会使用此功能添加 4 欧元的费用:
add_action('woocommerce_cart_calculate_fees', 'increase_cod_cost');
function increase_cod_cost() {
if(WC()->session->chosen_payment_method=='cod')
WC()->cart->add_fee(__('COD Fee'), 4);
}
我还使用此功能在您更改付款方式时立即更新结帐,以便在您选择 cod 时添加费用,并在您选择任何其他方式时删除:
add_action('woocommerce_review_order_before_payment', 'custom_checkout_update');
function custom_checkout_update() {
echo '
<script type="text/javascript">
(function($){
$(\'form.checkout\').on(\'change\', \'input[name="payment_method"]\', function() {
$(\'body\').trigger(\'update_checkout\');
});
})(jQuery);
</script>
';
}
这两个功能都 100% 工作。
现在,我不想增加费用,而是想适当增加实际运费,所以我尝试了这个功能而不是第一个:
add_filter('woocommerce_package_rates', 'increase_cod_cost_2', 10, 2);
function increase_cod_cost_2($rates, $package) {
if(WC()->session->chosen_payment_method=='cod')
$rates['flat_rate:1']->cost=$rates['flat_rate:1']->cost+4;
return $rates;
}
此功能也有效,但前提是我清空购物车然后再次添加产品。出于某种原因,它不会在我选择 cod 时立即更新运费。我真的不明白为什么 jQuery 函数可以通过添加费用来与第一个 php 函数一起使用,但不能通过更改运费来使用这个函数。你能帮我看看有什么问题吗?谢谢。
【问题讨论】:
-
为什么不将其添加为不同的统一费率费用?为什么要修改现有的统一费率?
标签: php jquery ajax wordpress woocommerce