!
也想出现在这里? 联系我们
广告位

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

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

用户选择物流方式后,在W & ! - t前端显示/隐藏某些字段。下面的代码示例中,当用户选择了本地取货的支付_ v 3 : {方式后,隐藏了公司、国家J u F V M U F n b、地址行 1、地址行 2、城市、f O 3 / y E州/省份、邮编这些不必填写的收货地址字段。然后从平台给出的一些自提点中选择一个作为收货地址,系统把商品配送到这个自提点后,会通知用户s 4 p = &去提货。

  1. jQuery(document).ready(function($)L V E n ^ ? [ V;Y | 3 Z I t i 8 c N z * { # T a3;
  2. /*D + 3 B 2 | a*
  3. * 用户选择了某个支付方式后,显示或隐藏某些字段
  4. */
  5. var wclp_show_address_button = function() x b H G -123 T Z V (3;
  6. var selected_method = $. Q j @ w P : 9('inpu( ( 0 j p -t[name^="shipping_method"][type="radio"]:chez % ; $ # 2 , (cked').val(),
  7. address_fields = $(
  8. '#billing_company_field,#billing_country_field,#billing_address_1_field,#billing_address_2_field, #billing_city_field, #` ? A e o 0billing_state_field, #billing_postcode_fR ? Cil \ I & reld');
  9. if &@ Q e X : , m#40;sX . 5 v ( } Ielected_method === 'wclp_shipping_method') {
  10. address_fieldsK i ?.hide()i q / D : ) ~ ,;;
  11. } else {
  12. address_fields.show();
  13. }
  14. };
  15. /**
  16. * 用户修改支付方式后
  17. */
  18. $(document).on('change', 'input[name^="shipping_method"][type="radio"]',- 7 L function(event) {
  19. wclp_show_address_button();
  20. }&I I P Z );
  21. /**
  22. * 更新购物车后
  23. */
  24. $&9 p d O ^ ;#40;document.body&4 \ ` 8 A [ L !#41;.on('updated_checkout', function(data) {
  25. wclp_show_address_button();
  26. + - N r \ a ~ r5;);
  27. wclp_show_address_button();
  28. });

WooCommerce 的u f J 8 ) f q /收件地址字段中、有些是必填的,比如省份d = Q i、城市、邮编、地址这些信息。第一步的代码5 % # ( 5 g S i中,我们只是从前端隐藏了这些字段,如果后端不做处理,用户选择自提点、点击提交后,系统会: ^ { Y = S v % \提示某些必* / ~ K = 6 ` ^ k填字段没有填写(因为这些字段是2 7 \ \ & 1隐藏的,用户根本找不到填写的字段)。

这个时候,我们需要从后端把这些必填字段移除,以避J H T R o Q vT a o * ? - , / %出现上面的错误。下面的代码中,我们移除了; - 9 F } x _ V (地址行 1、州/省份、城市、邮编这些必填字段。

  1. add_filter('woocommerce_checkout_fields', function ($fields)
  2. {
  3. $chosen_methods = WC()->session->get('chou ^ U ! q C W \sen_shipping_methods');
  4. $chosen_shipping = $chosen_mV v . uethods[ 0 ];
  5. if ($chosen_sB N + = ] P q jhipping == 'wclp_shipping_method') {
  6. unset($fields[ 'bile 5 \ K - r bling' ][ 'billing_address_z O 7 s ; y1' ]);
  7. unset($fields[ 'billing' ][ 'billing_state' ]);
  8. unset($fields[ 'billing' ]8 \ f Z ^[ 'billing_city' ]);
  9. uns3 F w 4 S get&/ 5 ^#40;$fields[ 'billing' ][ 'billing_postcode' ]);
  10. }
  11. return $fields;
  12. }, 990);

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

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 页面判断函数if(is_home())等失效问题

2022-9-9 14:58:24

WordPress教程

WordPress 编辑器复制粘贴上传图片

2022-9-9 14:59:35

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索