Closed. This question is off-topic. It is not currently accepting answers.admin管理员组文章数量:1130349
Questions should be specific to WordPress within defined scope (merely happening in its context, such as generic PHP/JS/HTML/CSS, is insufficient). Might be better asked at Stack Overflow or other appropriate site of Stack Exchange network.
Closed 11 years ago.
Improve this questionI'm creating a madlib style checkout form using WooTheme's Customizing checkout fields using actions and filters.
Billing fields in the checkout template form-billing.phpare displayed with this call:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
How can change the order the fields appear?
The current (default) field order is:
first name
last name
company (hidden for me)
town/city
zipcode
country
state
email
phone
Default order:
I want the fields to be in a more natural order for Americans (where I live), so:
first name
last name
company (hidden for me)
town/city
state
zipcode
country
email
phone
How can I best do this?
Closed. This question is off-topic. It is not currently accepting answers.Questions should be specific to WordPress within defined scope (merely happening in its context, such as generic PHP/JS/HTML/CSS, is insufficient). Might be better asked at Stack Overflow or other appropriate site of Stack Exchange network.
Closed 11 years ago.
Improve this questionI'm creating a madlib style checkout form using WooTheme's Customizing checkout fields using actions and filters.
Billing fields in the checkout template form-billing.phpare displayed with this call:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
How can change the order the fields appear?
The current (default) field order is:
first name
last name
company (hidden for me)
town/city
zipcode
country
state
email
phone
Default order:
I want the fields to be in a more natural order for Americans (where I live), so:
first name
last name
company (hidden for me)
town/city
state
zipcode
country
email
phone
How can I best do this?
Share Improve this question asked Jan 5, 2013 at 16:45 MTTMTT 3,59612 gold badges47 silver badges74 bronze badges3 Answers
Reset to default 31Same can be done through functions.php in your (child) theme:
add_filter("woocommerce_checkout_fields", "order_fields");
function order_fields($fields) {
$order = array(
"billing_first_name",
"billing_last_name",
"billing_company",
"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;
}
Thanks to Dbranes for the answer.
Replace:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
With:
<?php
// order the keys for your custom ordering or delete the ones you don't need
$mybillingfields=array(
"billing_first_name",
"billing_last_name",
"billing_company",
"billing_address_1",
"billing_address_2",
"billing_city",
"billing_state",
"billing_postcode",
"billing_country",
"billing_email",
"billing_phone",
);
foreach ($mybillingfields as $key) : ?>
<?php woocommerce_form_field( $key, $checkout->checkout_fields['billing'][$key], $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
You can make a copy into your theme and edit the template that renders the checkout form.
Adapted from the plugin documentation:
Example
To overide the admin order notification, copy:woocommerce/templates/checkout/form-checkout.php
to
yourtheme/woocommerce/checkout/form-checkout.php
[update]
In this file, just before the fields being printed, there's this action hook: do_action('woocommerce_before_checkout_billing_form', $checkout);.
So, it's just a matter of adding this action in the theme's functions.php or in a custom plugin and reordering the fields as the OP shows in his Answer. No need of overriding the template, or yes if further customizations are needed.
Questions should be specific to WordPress within defined scope (merely happening in its context, such as generic PHP/JS/HTML/CSS, is insufficient). Might be better asked at Stack Overflow or other appropriate site of Stack Exchange network.
Closed 11 years ago.
Improve this questionI'm creating a madlib style checkout form using WooTheme's Customizing checkout fields using actions and filters.
Billing fields in the checkout template form-billing.phpare displayed with this call:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
How can change the order the fields appear?
The current (default) field order is:
first name
last name
company (hidden for me)
town/city
zipcode
country
state
email
phone
Default order:
I want the fields to be in a more natural order for Americans (where I live), so:
first name
last name
company (hidden for me)
town/city
state
zipcode
country
email
phone
How can I best do this?
Closed. This question is off-topic. It is not currently accepting answers.Questions should be specific to WordPress within defined scope (merely happening in its context, such as generic PHP/JS/HTML/CSS, is insufficient). Might be better asked at Stack Overflow or other appropriate site of Stack Exchange network.
Closed 11 years ago.
Improve this questionI'm creating a madlib style checkout form using WooTheme's Customizing checkout fields using actions and filters.
Billing fields in the checkout template form-billing.phpare displayed with this call:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
How can change the order the fields appear?
The current (default) field order is:
first name
last name
company (hidden for me)
town/city
zipcode
country
state
email
phone
Default order:
I want the fields to be in a more natural order for Americans (where I live), so:
first name
last name
company (hidden for me)
town/city
state
zipcode
country
email
phone
How can I best do this?
Share Improve this question asked Jan 5, 2013 at 16:45 MTTMTT 3,59612 gold badges47 silver badges74 bronze badges3 Answers
Reset to default 31Same can be done through functions.php in your (child) theme:
add_filter("woocommerce_checkout_fields", "order_fields");
function order_fields($fields) {
$order = array(
"billing_first_name",
"billing_last_name",
"billing_company",
"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;
}
Thanks to Dbranes for the answer.
Replace:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
With:
<?php
// order the keys for your custom ordering or delete the ones you don't need
$mybillingfields=array(
"billing_first_name",
"billing_last_name",
"billing_company",
"billing_address_1",
"billing_address_2",
"billing_city",
"billing_state",
"billing_postcode",
"billing_country",
"billing_email",
"billing_phone",
);
foreach ($mybillingfields as $key) : ?>
<?php woocommerce_form_field( $key, $checkout->checkout_fields['billing'][$key], $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
You can make a copy into your theme and edit the template that renders the checkout form.
Adapted from the plugin documentation:
Example
To overide the admin order notification, copy:woocommerce/templates/checkout/form-checkout.php
to
yourtheme/woocommerce/checkout/form-checkout.php
[update]
In this file, just before the fields being printed, there's this action hook: do_action('woocommerce_before_checkout_billing_form', $checkout);.
So, it's just a matter of adding this action in the theme's functions.php or in a custom plugin and reordering the fields as the OP shows in his Answer. No need of overriding the template, or yes if further customizations are needed.
本文标签: filtersHow to reorder billing fields in WooCommerce Checkout template
版权声明:本文标题:filters - How to reorder billing fields in WooCommerce Checkout template? 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/questions/1749127262a2319990.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论