Skip to content

Instantly share code, notes, and snippets.

@siriokun
Forked from gamaup/functions.php
Created November 2, 2017 07:56
Show Gist options
  • Save siriokun/6bedb0c793f91f8431c0a12dbd6381ab to your computer and use it in GitHub Desktop.
Save siriokun/6bedb0c793f91f8431c0a12dbd6381ab to your computer and use it in GitHub Desktop.
Reorder Checkout Fields
<?php
/* WooCommerce < 3.0.4 */
add_filter('woocommerce_checkout_fields','reorder_fields');
function reorder_fields($fields) {
$billing_field_order = array(
'billing_first_name',
'billing_last_name',
'billing_address_1',
'billing_email',
'billing_phone',
'billing_country',
'billing_state',
'billing_city',
'billing_district',
'billing_postcode'
);
$shipping_field_order = array(
'shipping_first_name',
'shipping_last_name',
'shipping_address_1',
'shipping_email',
'shipping_phone',
'shipping_country',
'shipping_state',
'shipping_city',
'shipping_district',
'shipping_postcode'
);
$ordered_billing_fields = array();
$ordered_shipping_fields = array();
foreach ($billing_field_order as $field) {
$ordered_billing_fields[$field] = $fields['billing'][$field];
}
foreach ($shipping_field_order as $field) {
$ordered_shipping_fields[$field] = $fields['shipping'][$field];
}
$fields['billing'] = $ordered_billing_fields;
$fields['shipping'] = $ordered_shipping_fields;
return $fields;
}
/* WooCommerce >= 3.0.4 */
add_filter('woocommerce_checkout_fields','reorder_fields');
function reorder_fields($fields) {
// set priority
$fields['billing']['billing_country']['priority'] = 120;
$fields['billing']['billing_state']['priority'] = 130;
$fields['billing']['billingg_city']['priority'] = 140;
$fields['billing']['billing_district']['priority'] = 150;
$fields['shipping']['shipping_country']['priority'] = 120;
$fields['shipping']['shipping_state']['priority'] = 130;
$fields['shipping']['shipping_city']['priority'] = 140;
$fields['shipping']['shipping_district']['priority'] = 150;
return $fields;
}
/* Using plugin ongkos kirim filter */
add_filter('pok_fields_order', 'reorder_fields');
function reorder_fields($fields) {
$fields['first_name'] = 10;
$fields['last_name'] = 20;
$fields['company'] = 30;
$fields['country'] = 40;
$fields['state'] = 50;
$fields['city'] = 60;
$fields['district'] = 70;
$fields['address_1'] = 80;
$fields['address_2'] = 90;
$fields['postcode'] = 100;
$fields['phone'] = 110;
$fields['email'] = 120;
return $fields;
}
/**
* === CATATAN! ===
* Sejak versi WC 3.0.4, urutan fields diatur berdasarkan priority.
* Plugin Ongkos Kirim v2.0.10 sudah diset priority masing-masing field.
* Namun sepertinya WooCommerce masih mempunyai bug yang menyebabkan sistem priority ini tidak berjalan dengan semestinya.
* Bisa dicek di thread berikut: https://wordpress.org/support/topic/reordering-checkout-fields-doesnt-work-anymore-on-3-0-4/
*/
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment