WooCommerce重新排序结账字段

我有一个有关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;
}

结果:

为什么我要设置priority4?让我解释一下,每个默认字段都有其自己的优先级,所有这些都在下表中列出。因此,根据该表,要首先设置电子邮件字段,我必须使用小于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大学 翻译整理,转载请保留本声明!

倡萌

一个文科IT宅男,喜欢折腾WordPress和被它折腾 ^_^

暂无评论

发表评论