好几年没自己接触wordpress的WooCommerce商城插件了,最近因为疫情原因,为了写教程,自己折腾了一个Wordpress商城网站,用到了WooCommerce插件。
在下单结算页面,看了下WooCommerce默认带了邮箱地址,邮编,还是必须填写选项。不过这两项目前在国内很少用到吧,邮箱就不说吧,有的卖虚拟产品可能需要,邮编这个的确少了。
就找了下怎么删掉邮编这项,可以用代码解决也可以用插件解决。
如果用插件,推荐使用:Checkout Field Editor (Checkout Manager) for WooCommerce,这个插件是收费的,不过免费版本就够用了,我也没测试过,因为是在国外一个网站看见有人推荐的。
当然如果你不想用插件,那就用代码解决吧,把以下代码加到主题的functions.php文件里面:
2020年7月1日更新:
之前只用了woocommerce_billing_fields钩子,今天才发现用户自己在个人中心修改地址,还是会出来全部信息,然后又仔细看了下官方教程,原来有好几种情况。
- woocommerce_billing_fields 只是开票页面地址
- woocommerce_shipping_fields 只是运输页面地址
- woocommerce_checkout_fields 只是结算付款页面地址
- woocommerce_default_address_fields 这个才是总地址管理,也就是包括了上面2个
那为了方便减少代码,我们现在只需要用woocommerce_default_address_fields修改就行了。
//本地化woocommerce add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' ); function custom_override_default_address_fields( $fields ) { unset($fields['postcode']);//删掉邮政编号 unset($fields['city']);//删掉城市 unset($fields['state']);//删掉省会 unset($fields['last_name']);//删掉姓氏 return $fields; }
但是由于woocommerce_default_address_fields并不涉及邮箱,所以如果你不用邮箱,还是得用woocommerce_checkout_fields和woocommerce_billing_fields两个钩子。
woocommerce_checkout_fields这个是订单付款那个页面,不需要邮箱,前面带billing。
//Hook in 结算地址email add_filter( 'woocommerce_checkout_fields' , 'custom_remove_billing_email_fields' ); function custom_remove_billing_email_fields( $fields ) { unset($fields['billing']['billing_email']);//删掉邮箱地址 return $fields; }
woocommerce_billing_fields这个是前台个人中心里面的地址,如果不用邮箱,不带billing。
// Hook in 个人中心地址email add_filter( 'woocommerce_billing_fields' , 'custom_override_billing_fields' ); function custom_override_billing_fields( $fields ) { unset($fields['billing_email']); return $fields; }
更新结束,更新之后个人中心修改地址:

付款页面地址:

如果不删,把改成选填:
// Hook in add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' ); // Our hooked in function - $address_fields is passed via the filter! function custom_override_default_address_fields( $address_fields ) { $address_fields['last_name']['required'] = false;//姓名选填 return $address_fields; }
woocommerce_default_address_fields
默认的字段:
country first_name last_name company address_1 address_2 city state postcode
Billing 结算相关字段:
billing_first_name //名字 billing_last_name //姓氏 billing_company //公司 billing_address_1 //地址1 billing_address_2 //地址2 billing_city //城市 billing_postcode //邮编 billing_country //国家 billing_state //这里可以理解为省会级别 billing_email //邮箱 billing_phone //电话
Shipping 运输相关字段:
shipping_first_name shipping_last_name shipping_company shipping_address_1 shipping_address_2 shipping_city shipping_postcode shipping_country shipping_state
account 账户相关字段:
account_username account_password account_password-2
Order 订单相关字段:
order_comments
记得去后台设置WooCommerce配送选项,改成“强制配送到顾客的账单地址”

其他的参考官方教程就行了:
https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/