2016-08-23 106 views
0

我已經重新安排了Woocommerce結帳頁面上的訂單字段使用此項功能:Woocommerce重新結賬領域

//Reorder checkout 
    add_filter('woocommerce_checkout_fields', 'reorder_woo_fields'); 
    function reorder_woo_fields($fields) { 
    $fields2['billing']['billing_first_name'] = $fields['billing'] ['billing_first_name']; 
    $fields2['billing']['billing_last_name'] = $fields['billing']['billing_last_name']; 
    $fields2['billing']['billing_company'] = $fields['billing']['billing_company']; 
    $fields2['billing']['billing_address_1'] = $fields['billing']['billing_address_1']; 
    $fields2['billing']['billing_city']  = $fields['billing']['billing_city']; 
    $fields2['billing']['billing_postcode'] = $fields['billing']['billing_postcode']; 
    $fields2['billing']['billing_country'] = $fields['billing']['billing_country']; 
    $fields2['billing']['billing_email']  = $fields['billing']['billing_email']; 
    $fields2['billing']['billing_phone']  = $fields['billing']['billing_phone']; 

    $fields2['shipping']['shipping_first_name'] = $fields['shipping']['shipping_first_name']; 
    $fields2['shipping']['shipping_last_name'] = $fields['shipping']['shipping_last_name']; 
    $fields2['shipping']['shipping_company'] = $fields['shipping']['shipping_company']; 
    $fields2['shipping']['shipping_address_1'] = $fields['shipping']['shipping_address_1']; 
    $fields2['shipping']['shipping_city'] = $fields['shipping']['shipping_city']; 
    $fields2['shipping']['shipping_postcode'] = $fields['shipping']['shipping_postcode']; 
    $fields2['shipping']['shipping_country'] = $fields['shipping']['shipping_country']; 

    // Add full width Classes and Clears to Adjustments  
    $fields2['billing']['billing_first_name'] = array(
     'label' => __('First Name', 'woocommerce'), 
    'class'  => array('form-row-wide'), 
    'clear'  => true, 
    'required' => true 
    ); 
    $fields2['billing']['billing_last_name'] = array(
    'label' => __('Last Name', 'woocommerce'), 
    'class'  => array('form-row-wide'), 
    'clear'  => true, 
     'required' => true 
    ); 
    $fields2['shipping']['shipping_first_name'] = array(
     'label' => __('First Name', 'woocommerce'), 
    'class'  => array('form-row-wide'), 
    'clear'  => true, 
    'required' => true 
    ); 
    $fields2['shipping']['shipping_last_name'] = array(
    'label' => __('Last Name', 'woocommerce'), 
    'class'  => array('form-row-wide'), 
    'clear'  => true, 
     'required' => true 
    ); 
    return $fields2; 
    } 

這個工作,但啓用調試模式時,我收到chekcout頁面上的錯誤: 公告:未定義索引:訂單在第58行的/html/wordpress/wp-content/plugins/woocommerce/templates/checkout/form-shipping.php

警告:在/ html/wordpress/wp-content/plugins/woocommerce/templates/checkout/form-shipping.php on line 58

aynone可以理解這一點嗎?

+0

我首先看到的是你[「結算」]和[「billing_first_name」]之間的額外空間。這可能是你的問題的原因 –

回答

3

您可以嘗試以下代碼重新排列結帳頁面字段。您可以調整數組中字段的順序。

// for billing fields 

add_filter("woocommerce_checkout_fields", "new_order_fields"); 

function new_order_fields($fields) { 

    $order = array(
     "billing_company", 
     "billing_first_name", 
     "billing_last_name", 
     "billing_address_1", 
     "billing_address_2", 
     "billing_postcode", 
     "billing_country", 
     "billing_email", 
     "billing_phone" 
    ); 
    foreach($order as $field) { 
     $ordered_fields[$field] = $fields["billing"][$field]; 
    } 

    $fields["billing"] = $ordered_fields; 
    return $fields;  
} 

// for shipping fields 
add_filter("woocommerce_checkout_fields", "new_shiping_order_fields"); 

function new_shiping_order_fields($fields) { 

    $order = array( 
     "shipping_city", 
     "shipping_postcode", 
     "shipping_country",  
     "shipping_first_name", 
     "shipping_last_name", 
     "shipping_company", 
     "shipping_address_1", 
     "shipping_address_2" 

    ); 
    foreach($order as $field) { 
     $ordered_fields[$field] = $fields["shipping"][$field]; 
    } 

    $fields["shipping"] = $ordered_fields; 
    return $fields; 
} 
+0

這隻會重新排列字段,但我還需要刪除訂單備註字段並將全寬添加到某些字段(請參閱我的代碼上面)... –

0

你可以在the WooCommerce docs找到一個完整的指南。

您正在定義一個新陣列$fields2,並且此陣列不具有woocommerce_checkout_fields中所需的所有字段。您只需要覆蓋$fields["billing"]$fields["shipping"],就像@pallavi showed you一樣。

要刪除某個字段(例如,order_comments),你可以把這個線在你的函數

unset($fields['order']['order_comments']);