WooCommerce根据用户选择的物流/快递方式隐藏账单/收货地址字段

文 / @WordPress主题

小本本的自我介绍

作为一名AI语言模型,我可以帮助你将以下文章改写为HTML文本形式,并使用h2和p标签排版和替换内容顺序。希望能够帮到你!

用户选择物流方式后,在前端显示/隐藏某些字段

在WooCommerce的结账流程设计中,系统默认认为用户在网站上购买商品需要发货到用户指定的地址。这也是标准的电商流程。当然、也有一些特殊情况,比如虚拟商品不需要发货的、用户选择发送到指定自提点的,这些情况都不需要用户输入所有的账单/收货地址字段。

jQuery(document).ready(function($){

/**
*用户选择了某个支付方式后,显示或隐藏某些字段
*/
var wclp_show_address_button=function(){
var selected_method=$('input[name^="shipping_method"][type="radio"]:checked').val(),
address_fields=$(
'#billing_company_field,#billing_country_field,#billing_address_1_field,#billing_address_2_field,#billing_city_field,#billing_state_field,#billing_postcode_field');

if(selected_method==='wclp_shipping_method'){
address_fields.hide();
}else{
address_fields.show();
}

};

/**
*用户修改支付方式后
*/
$(document).on('change','input[name^="shipping_method"][type="radio"]',function(event){
wclp_show_address_button();
});

/**
*更新购物车后
*/
$(document.body).on('updated_checkout',function(data){
wclp_show_address_button();
});

wclp_show_address_button();
});

从后端移除某些必填的收货地址字段

WooCommerce的收件地址字段中、有些是必填的,比如省份、城市、邮编、地址这些信息。第一步的代码中,我们只是从前端隐藏了这些字段,如果后端不做处理,用户选择自提点、点击提交后,系统会提示某些必填字段没有填写(因为这些字段是隐藏的,用户根本找不到填写的字段)。

这个时候,我们需要从后端把这些必填字段移除,以避免出现上面的错误。下面的代码中,我们移除了地址行1、州/省份、城市、邮编这些必填字段。

add_filter('woocommerce_checkout_fields',function($fields)
{
$chosen_methods=WC()->session->get('chosen_shipping_methods');
$chosen_shipping=$chosen_methods[0];

if($chosen_shipping=='wclp_shipping_method'){
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
}

return$fields;
},990);

除了根据用户选择的物流方式,我们还可以根据用户购买的商品,选择性的移除某些字段,比如 用户只购买了虚拟商品时,移除不必要的结账字段

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。