1. David Wu首页
  2. WordPress
  3. WordPress安装教程

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

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

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

  1. jQuery(document).ready(function($) {
  2. 
    
  3.     /**
  4.      * 用户选择了某个支付方式后,显示或隐藏某些字段
  5.      */
  6.     var wclp_show_address_button = function() {
  7.         var selected_method = $('input[name^="shipping_method"][type="radio"]:checked').val(),
  8.             address_fields = $(
  9.       '#billing_company_field,#billing_country_field,#billing_address_1_field,#billing_address_2_field, #billing_city_field, #billing_state_field, #billing_postcode_field');
  10. 
    
  11.         if (selected_method === 'wclp_shipping_method') {
  12.             address_fields.hide();
  13.         } else {
  14.             address_fields.show();
  15.         }
  16. 
    
  17.     };
  18. 
    
  19.     /**
  20.      * 用户修改支付方式后
  21.      */
  22.     $(document).on('change', 'input[name^="shipping_method"][type="radio"]', function(event) {
  23.         wclp_show_address_button();
  24.     });
  25. 
    
  26.     /**
  27.      * 更新购物车后
  28.      */
  29.     $(document.body).on('updated_checkout', function(data) {
  30.         wclp_show_address_button();
  31.     });
  32. 
    
  33.     wclp_show_address_button();
  34. });

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

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

  1. add_filter('woocommerce_checkout_fields', function ($fields)
  2. {
  3.     $chosen_methods  = WC()->session->get('chosen_shipping_methods');
  4.     $chosen_shipping = $chosen_methods[ 0 ];
  5. 
    
  6.     if ($chosen_shipping == 'wclp_shipping_method') {
  7.         unset($fields[ 'billing' ][ 'billing_address_1' ]);
  8.         unset($fields[ 'billing' ][ 'billing_state' ]);
  9.         unset($fields[ 'billing' ][ 'billing_city' ]);
  10.         unset($fields[ 'billing' ][ 'billing_postcode' ]);
  11.     }
  12. 
    
  13.     return $fields;
  14. }, 990);

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

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/103143

服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

邮箱地址不会被公开。 必填项已用*标注