【发布时间】:2019-12-11 22:44:48
【问题描述】:
我使用 Jeroen Sormani 的 Woocommerce Advanced Shipping plugin 作为送货方式,使用 Karolína Vyskočilová 的 WooCommerce Pay for Payment plugin 为“货到付款”付款方式添加 5 欧元的固定费用。
使用 Advanced Shipping 插件,我还创建了一个名为“本地取货”的通用规则,以便始终对客户可见。然后我需要隐藏“当地提货”运输选项时隐藏“现金交货”付款方式。为此,我必须在我的 functions.php 文件中添加一些代码,以便在高级运输规则中识别特定的本地取货规则:
function my_custom_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
// When 'local pickup' (rule id 21828) has been chosen as shipping rate
if ( in_array( '21828', $chosen_shipping_rates ) ) :
// Unset 'cash on delivery'
unset( $gateways['cod'] );
endif;
return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );
这是我的问题:在结帐页面中,当我切换到“本地取货”时,“货到付款”选项如前所述消失了,但订单审核表中的 5 欧元费用仍然存在。我必须再次手动切换付款方式(即从银行转帐到信用卡)才能使费用消失。
我需要找到一些解决方案,以在选择本地取货时触发订单审核更新/刷新。
我尝试在结帐页面中插入以下脚本,但没有成功
function woocommerce_add_update_cart() {
// Only on checkout page
if( ! is_checkout() ) return;
?>
<script type="text/javascript">
jQuery(document.body).trigger("update_checkout");
</script>
<?php
}
add_action( 'wp_footer', 'woocommerce_add_update_cart' );
【问题讨论】:
标签: javascript php ajax wordpress woocommerce