根据选择的运输有条件地隐藏 WooCommerce 中的付款字段

时间:2021-02-21 20:11:23

标签: php jquery wordpress woocommerce woocommerce-checkout-fields

在Woocommerce中,只要选择“送货”或“拾取”,我都试图隐藏付款领域。我已经尝试了几次从 Conditionally hide a Checkout field in WooCommerce based on chosen shipping 答案代码。

我希望何时选择送货方式:

  1. 带走: - '隐藏' .payment_method_cod -> (OK WORKS) - 'show' .payment_method_cheque ->(不工作)
  2. 交货: - '隐藏' .payment_method_cheque -> (OK WORKS) - 'show' .payment_method_cod ->(不工作)
    我该怎么做?

我的脚本:

// Conditional Show o hide checkout fields based on chosen shipping methods
add_action( 'wp_footer', 'hide_any_parts' );
function hide_any_parts(){
    // Only on checkout page
    if( ! is_checkout() ) return;
    
    // HERE your shipping methods rate ID "Home delivery" - Take-Away Ritiro presso il Ristorante
    $home_delivery = 'flat_rate:9';      //delivery
    $take_away = 'flat_rate:11';        //take-away
    ?>
    <script>
        jQuery(function($){
            // Choosen shipping method selectors slug
            var shipMethod = 'input[name^="shipping_method"]',
                shipMethodChecked = shipMethod+':checked';

            // Function that shows or hide imput select fields
            function showHide( actionToDo='show', selector='' ){
                if( actionToDo == 'show' )
                    $(selector).show( 200, function(){
                        $(this).addClass("validate-required");
                    });
                else
                    $(selector).hide( 200, function(){
                        $(this).removeClass("validate-required");
                    });
                $(selector).removeClass("woocommerce-validated");
                $(selector).removeClass("woocommerce-invalid woocommerce-invalid-required-field");
            }
  
             //DElivery:                 #coderockz_woo_delivery_delivery_date_section  ,       #coderockz_woo_delivery_delivery_time_section      
            // take away:               #coderockz_woo_delivery_pickup_date_datepicker,     #coderockz_woo_pickup_time_section
            
             
            // Initialising: Hide if choosen shipping method is "Home delivery" 
            if( $(shipMethodChecked).val() == '<?php echo $home_delivery; ?>' )
                showHide('hide', '  .payment_method_cheque' ) ; //delivery
         
            
            // Initialising: Hide if choosen shipping method is "take_away" 
            else if( $(shipMethodChecked).val() == '<?php echo $take_away; ?>' )
                showHide('hide', ' .payment_method_cod' ); //take-away
               
 
            // Live event (When shipping method is changed)
            $( 'form.checkout' ).on( 'change', shipMethod, function() {
                if( $(shipMethodChecked).val() == '<?php echo $home_delivery; ?>' )
                    showHide('hide',' .payment_method_cheque') ;  //delivery
                       
                
                
                else if( $(shipMethodChecked).val() == '<?php echo $take_away; ?>' )
                    showHide('hide','  .payment_method_cod' );  //take-away          
                               
                    
                
                else 
                    showHide('show',' .payment_method_cod, .payment_method_cheque ');
                 
            });  
        });
    </script>
    <?php
}

0 个答案:

没有答案