我有一个有关WooCommerce 结账字段的教程,但是我在有关如何更改结账字段顺序的评论中收到很多问题。因此,我决定为此编写一个单独的教程。
如果您没有阅读有关WooCommerce结账字段的完整教程,我强烈建议您先阅读它,然后再回到这里。
组内排序字段
首先要记住的是,字段被分成几组,实际上有4个组:
billing
– 账单地址shipping
– 送货地址account
– 账号登录order
– 附加信息
这些组中的每一个都包含字段,我想您知道哪个字段。而且,您可以使用特殊priority
参数轻松地对它们重新排序。
示例:我想使邮箱字段成为第一个显示的字段,我可以使用以下几行代码来做到这一点:
add_filter( 'woocommerce_checkout_fields', 'misha_email_first' );
function misha_email_first( $checkout_fields ) {
$checkout_fields['billing']['billing_email']['priority'] = 4;
return $checkout_fields;
}
结果:
为什么我要设置priority
为4
?让我解释一下,每个默认字段都有其自己的优先级,所有这些都在下表中列出。因此,根据该表,要首先设置电子邮件字段,我必须使用小于10的值。
如果您更改了字段顺序,并且结果看起来很奇怪(例如,如果您尝试在半宽字段之间放置全宽字段,例如,姓和名之间的电子邮件),则可以使用此技巧轻松修复它。
woocommerce_default_address_fields
还有一个挂钩- woocommerce_default_address_fields
允许同时更改订单的计费和运送字段。因此,我们的示例代码如下:
add_filter( 'woocommerce_default_address_fields', 'misha_email_first' );
function misha_email_first( $address_fields ) {
// 如你所见,不需要指定字段所属的组
$address_fields['email']['priority'] = 4;
return $address_fields;
}
移动字段到其他字段组
对我来说,这种排序方式似乎有些棘手,并且在100%的情况下将不起作用,例如,您不能将“开票国家/地区”字段移动到“订单备注”下面。好吧,实际上,您可以,但是(一个很大的“but”),例如,当您尝试将一个国家更改为美国时,州不会出现在旁边的字段中。
这是示例,我们将账单电子邮件字段移到另一个组:
add_filter( 'woocommerce_checkout_fields', 'misha_billing_email_another_group' );
function misha_billing_email_another_group( $checkout_fields ){
// 1. 我们分配一个字段数组到新的分组
$checkout_fields['order']['billing_email'] = $checkout_fields['billing']['billing_email'];
// 2. 从之前的位置移除字段
unset( $checkout_fields['billing']['billing_email'] );
return $checkout_fields;
}
效果不错:
关于结账界面的修改,可以看下:
如果您对 WooCommerce 的使用还不太了解,或者想系统学习 WooCommerce 开发,可以学习教程《WooCommerce 开发指南视频课程(使用详解/主题开发/支付宝网关开发)》。
声明:原文出自 https://rudrastyh.com/woocommerce/reorder-checkout-fields.html ,由 WordPress大学 翻译整理,转载请保留本声明!