WooCommerce - 在现有结帐字段上覆盖结算状态和邮政编码

WooCommerce - 在现有结帐字段上覆盖结算状态和邮政编码

问题描述:

我无法找到ovveride结算状态和邮政编码的方式。WooCommerce - 在现有结帐字段上覆盖结算状态和邮政编码

如何编辑现有结算字段的其他部分,如结算状态和邮政编码?

这是我在functions.php文件在我的子主题(我已经包括影响计​​费部分的代码):

<?php 
function my_custom_checkout_field($checkout) { 
    global $wpdb; 
    $check_zone = $wpdb->get_results("select area_name from brick_area where id='".$_SESSION['area']."'",ARRAY_A); 

       if(!empty($check_zone)){ 
        $check_zoneid = $check_zone['0']; 
       } 


    woocommerce_form_field('my_field_name', array(
     'type'   => 'text', 
     'class'   => array('my-field-class form-row-wide'), 
     'label'   => __('Delivery Area'), 
     'placeholder' => __('Area'), 
     'readonly'  =>'readonly', 
     'default'  => $check_zoneid['area_name'] 
     ), $checkout->get_value('my_field_name')); 


    woocommerce_form_field('my_expected_date', array(
     'type'   => 'text', 
     'class'   => array('my-field-class form-row-wide'), 
     'required'  => true, 
     'label'   => __('Expected Delivery Date'), 
     'placeholder' => __('Enter expected delivery date.'), 
     ), $checkout->get_value('my_expected_date')); 

    /*woocommerce_form_field('my_expected_time', array(
     'type'   => 'text', 
     'class'   => array('my-field-class form-row-wide'), 
     'required'  => true, 
     'label'   => __('Expected Delivery Time'), 
     'placeholder' => __('Enter expected delivery time.'), 
     ), $checkout->get_value('my_expected_time'));*/ 

    woocommerce_form_field('site_contact_name', array(
     'type'   => 'text', 
     'class'   => array('my-field-class form-row-wide'), 
     'required'  => true, 
     'label'   => __('Site Contact Person Name'), 
     'placeholder' => __('Enter site contact person name.'), 
     ), $checkout->get_value('site_contact_name'));  

    woocommerce_form_field('site_contact_phone', array(
     'type'   => 'tel', 
     'class'   => array('my-field-class form-row-wide'), 
     'required'  => true, 
     'label'   => __('Site Contact Phone Number'), 
     'placeholder' => __('Enter site contact phone number.'), 
     ), $checkout->get_value('site_contact_phone'));  

} 
     $fields['billing']['billing_city']['default'] = $_SESSION['cn']; 
     add_filter('woocommerce_default_address_fields' , 'custom_override_default_address_fields'); 
     function custom_override_default_address_fields($address_fields) { 

      // we are changing here billing_state field to required 
      $fields['billing']['billing_state']['required'] = true; 

      return $address_fields; 
     } 
     /*$fields['billing']['my_field_name']['default'] = $check_zoneid['area_name']; 
     $fields['billing']['my_field_name']['label'] = 'Area';*/ 

     return $fields; 
     } 
?>  

感谢

+0

sure @LoicTheAztec – art

这是完整的对状态和帐单邮政编码覆盖进行结算的方式,使结算选择器保留选项。

这里是代码的完全功能和测试代码:

  1. 取消设置计费状态和后置码校验字段
add_filter('woocommerce_checkout_fields' , 'partial_unsetting_checkout_fields'); 
function partial_unsetting_checkout_fields($fields) { 
    unset($fields['billing']['billing_state']); 
    unset($fields['billing']['billing_postcode']); 

    return $fields; 
} 
  1. 重新插入定制的帐单州和邮政编码结账字段
  2. add_filter('woocommerce_default_address_fields' , 'art_override_default_address_fields'); 
    function art_override_default_address_fields($address_fields) { 
    
        // @ for state 
        $address_fields['billing_state']['type'] = 'select'; 
        $address_fields['billing_state']['class'] = array('form-row-wide'); 
        $address_fields['billing_state']['required'] = true; 
        $address_fields['billing_state']['label'] = __('State', 'my_theme_slug'); 
        $address_fields['billing_state']['placeholder'] = __('Enter state', 'my_theme_slug'); 
        $address_fields['billing_state']['default'] ='Choice 1'; 
        $address_fields['billing_state']['options'] = array(
         'option_1' => 'Choice 1', 
         'option_2' => 'Choice 2', 
         'option_3' => 'Choice 3' 
        ); 
    
        // @ for postcode 
        $address_fields['billing_postcode']['type'] = 'text'; 
        $address_fields['billing_postcode']['class'] = array('form-row-wide'); 
        $address_fields['billing_postcode']['required'] = true; 
        $address_fields['billing_postcode']['label'] = __('Postcode', 'my_theme_slug'); 
        $address_fields['billing_postcode']['placeholder'] = __('Enter your postcode', 'my_theme_slug'); 
    
    
        return $address_fields; 
    } 
    

    当然,这下去你的活动子主题的function.php文件或主题

    官方参考:WooThemes - Customizing checkout fields using actions and filters


    关于'class'财产

    有注2种方式来处理它:

    • 领域是单独一条线(宽度100%),可以使用:'form-row-wide'
    • 有2个字段并排在同一行上,可以使用:
      • 'form-row-first'为第一场
      • 'form-row-last'用于第二场
开始=>

//-------------------------- OVERRIDING BILLING STATE FIELD -------------------------------// 

    <?php 
    //Removing previous one by using unset 
      add_filter('woocommerce_checkout_fields' , 'custom_override_checkout_fields'); 

      // Our hooked in function - $fields is passed via the filter! 
      function custom_override_checkout_fields($fields) { 
       unset($fields['billing']['billing_state']); 

       return $fields; 
      } 


      add_filter('woocommerce_default_address_fields' , 'art_override_default_address_fields'); 

      function art_override_default_address_fields($address_fields) { 

       // @ for state 
       $address_fields['Billing_State']['type'] = 'text'; 
       $address_fields['Billing_State']['class'] = array('form-row-wide'); 
       $address_fields['Billing_State']['required'] = true; 
       $address_fields['Billing_State']['label'] = __('State', 'my_theme_slug'); 
       $address_fields['Billing_State']['placeholder'] = __('Enter state', 'my_theme_slug'); 


       $address_fields['Billing_State']['default'] =hgfdkda; 

       return $address_fields; 
      } 
     ?>