【问题标题】:WooCommerce shipping fileds required stateWooCommerce 运输字段必填状态
【发布时间】:2021-08-26 05:48:52
【问题描述】:

我正在使用以下功能根据客户是否选择本地取货来显示/隐藏结帐的送货地址部分。

它可以正常工作,但是运输部分中的某些字段是必需的,因此如果选择本地运输,结帐将不起作用。

如果选择本地取货,有没有办法使这些字段不需要?

add_action( 'woocommerce_after_checkout_form', 'bbloomer_disable_shipping_local_pickup' );
 
function bbloomer_disable_shipping_local_pickup( $available_gateways ) {
    
    // Part 1: Hide shipping based on the static choice @ Cart
    // Note: "#customer_details .col-1" strictly depends on your theme

    $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping = $chosen_methods[0];
    if ( 0 === strpos( $chosen_shipping, 'local_pickup' ) ) {
    ?>
        <script type="text/javascript">
            jQuery('#customer_details .col-1').fadeOut();
        </script>
    <?php  
    } 

    // Part 2: Hide shipping based on the dynamic choice @ Checkout
    // Note: "#customer_details .col-1" strictly depends on your theme

    ?>
        <script type="text/javascript">
            jQuery('form.checkout').on('change','input[name^="shipping_method"]',function() {
                var val = jQuery( this ).val();
                if (val.match("^local_pickup")) {
                            jQuery('#customer_details .col-1').fadeOut();
                    } else {
                    jQuery('#customer_details .col-1').fadeIn();
                }
            });
        </script>
    <?php
 
}

【问题讨论】:

    标签: php wordpress woocommerce shipping


    【解决方案1】:
    /* only hide shipping section using css/jquery is not the solution. you must need to remove fields as per your requirement */
    
    /* please Add the following code to your child theme functions.php file */ 
    
      add_filter( 'woocommerce_checkout_fields', 'change_shipping_field_optional');
    
      function change_shipping_field_optional( $fields ) {
     
        $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
        $shipping_pickup = $chosen_methods[0];
        
        if ($shipping_pickup == 'local_pickup:4') // here your shipping rate ID
        {
           /* add fields here as per your requirement */
    
            $fields['shipping_first_name']['required'] = false;
            $fields['shipping_last_name']['required'] = false;
            $fields['shipping_company']['required'] = false;
            $fields['shipping_country']['required'] = false;
            $fields['shipping_address_1']['required'] = false;
            $fields['shipping_address_2']['required'] = false;
            $fields['shipping_city']['required'] = false;
            $fields['shipping_state']['required'] = false;
            $fields['shipping_postcode']['required'] = false;
            
            unset($fields['shipping']['shipping_first_name']);
            unset($fields['shipping']['shipping_last_name']);
            unset($fields['shipping']['shipping_company']);
            unset($fields['shipping']['shipping_country']);
            unset($fields['shipping']['shipping_address_1']);
            unset($fields['shipping']['shipping_address_2']);
            unset($fields['shipping']['shipping_city']);
            unset($fields['shipping']['shipping_state']);
            unset($fields['shipping']['shipping_postcode']);
            
         }
            return $fields;
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      相关资源
      最近更新 更多