欢迎您光临本站,秉承服务宗旨,履行"站长"责任,销售只是起点,服务永无止境!
也想出现在这里? 联系我们

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

作者 : admin 本文共1691个字,预计阅读时间需要5分钟 发布时间: 2020-11-30 共5.3K人阅读
也想出现在这里? 联系我们

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

用户选择物流方式后,在前端显示/隐藏某些字段。下面的代码示例中,当用户选择了本地取货的支付方式后,隐藏了公司、国家、地址行1、地址行2、城市、州/省份、邮编这些不必填写的收货地址字段。然后从平台给出的一些自提点中选择一个作为收货地址,系统把商品配送到这个自提点后,会通知用户去提货。

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);

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

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
【演示站】Ripro子主题 » WooCommerce根据物流/快递方式隐藏账单/收货地址字段
也想出现在这里? 联系我们

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

发表评论

也想出现在这里? 联系我们
Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 京ICP备18888888号
开通VIP 享更多特权,建议使用QQ登录

Fatal error: Uncaught RedisException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error. in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0