首页 文章

禁用Woocommerce中特定付款方式的送货方式

提问于
浏览 1209
0

在我的网上商店,我提供2种送货方式(跟踪或未跟踪)和2种付款方式(银行转账和PayPal) .

我想要实现的目标:如果客户选择PayPal作为支付类型,他应该被迫选择“跟踪”作为运输方式 . “未跟踪”应该是隐藏的或灰色的或类似的东西 .

如果选择银行转帐,则应提供两种送货方式 .

任何帮助表示赞赏 .

1 回答

  • 0

    Your question is unclear 并且应该提供真正的送货方式费率ID,而不是制造麻烦和不工作的假标签 .

    要获取相关的送货方式费率ID,例如flat_rate:12,请使用浏览器代码检查器检查每个相关的单选按钮属性名称,如:

    Updated: 当"paypal"是所选的付款方式时,以下代码将禁用"Untracked"送货方式 (rate ID)

    add_filter( 'woocommerce_package_rates', 'shipping_methods_based_on_chosen_payment', 100, 2 );
    function shipping_methods_based_on_chosen_payment( $rates, $package ) {
        // HERE Set your 'Untracked' shipping method rate ID
        $targeted_rate_id = 'flat_rate:12';
    
        // Checking if "paypal" is the chosen payment method
        if ( is_checkout() && WC()->session->get( 'chosen_payment_method' ) === 'paypal' ) {
            // Loop through shipping methods rates
            foreach( $rates as $rate_key => $rate ){
                if ( $rate_key === $targeted_rate_id ) { 
                    unset($rates[$rate_key]); // Remove 'Untracked' shipping method
                }
            }
        }
        return $rates;
    }
    
    
    // Jquery script for checkout page
    add_action('wp_footer', 'refresh_checkout_on_payment_method_change' );
    function refresh_checkout_on_payment_method_change() {
        // Only checkout page
        if( is_checkout() && ! is_wc_endpoint_url() ):
        ?>
        <script type="text/javascript">
        jQuery(function($){
            // On shipping method change
            $('form.checkout').on( 'change', 'input[name^="payment_method"]', function(){
                $('body').trigger('update_checkout'); // Trigger Ajax checkout refresh
            });
        })
        </script>
        <?php
        endif;
    }
    

    代码位于活动子主题(或活动主题)的function.php文件中 . 经过测试和工作 .

    您可能需要刷新运输缓存数据:在Woocommerce运输设置中禁用,保存和启用,保存当前运输区域的相关运输方式 .


相关问题