使 WooCommerce 中不需要结账地址字段

2023-12-09

在 Woocommerce 中,我试图使用下面的代码使结账地址字段不需要......但我有这个错误提交结帐表格时“请输入地址以继续”。

我设置不需要的地址结帐字段的代码:

add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_phone', 10, 1 
);
function wc_npr_filter_phone( $address_fields ) {
    $address_fields['billing_phone']['required'] = true;
    $address_fields['billing_country']['required'] = false;
    $address_fields['billing_last_name']['required'] = false;
    $address_fields['billing_city']['required'] = false;
    $address_fields['billing_postcode']['required'] = false;
    $address_fields['billing_email']['required'] = false;
    $address_fields['billing_state']['required'] = false;
    $address_fields['billing_address_1']['required'] = false;
    $address_fields['billing_address_2']['required'] = false;
    return $address_fields;

}

//make shipping fields not required in checkout
add_filter( 'woocommerce_shipping_fields', 
'wc_npr_filter_shipping_fields', 10, 1 );
function wc_npr_filter_shipping_fields( $address_fields ) {
    $address_fields['shipping_first_name']['required'] = false;
    $address_fields['shipping_last_name']['required'] = false;
    $address_fields['shipping_address_1']['required'] = false;
    $address_fields['shipping_address_2']['required'] = false;
    $address_fields['shipping_city']['required'] = false;
    $address_fields['shipping_country']['required'] = false;
    $address_fields['shipping_postcode']['required'] = false;
    $address_fields['shipping_state']['required'] = false;
    return $address_fields;
}

HTML 似乎也没有问题:

HTML markup screenshot

如何使 WooCommerce 中不需要结帐地址字段?


你应该需要使用woocommerce_default_address_fields过滤器钩子代替解释here.

替换代码:

// Billing and shipping addresses fields
add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
function filter_default_address_fields( $address_fields ) {
    // Only on checkout page
    if( ! is_checkout() ) return $address_fields;

    // All field keys in this array
    $key_fields = array('country','first_name','last_name','company','address_1','address_2','city','state','postcode');

    // Loop through each address fields (billing and shipping)
    foreach( $key_fields as $key_field )
        $address_fields[$key_field]['required'] = false;

    return $address_fields;
}

作为帐单电子邮件和电话默认情况下已经需要,如果你想要它们不需要,你应该需要这个额外的代码:

// For billing email and phone - Make them not required
add_filter( 'woocommerce_billing_fields', 'filter_billing_fields', 20, 1 );
function filter_billing_fields( $billing_fields ) {
    // Only on checkout page
    if( ! is_checkout() ) return $billing_fields;

    $billing_fields['billing_phone']['required'] = false;
    $billing_fields['billing_email']['required'] = false;
    return $billing_fields;
}

所有代码都位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使 WooCommerce 中不需要结账地址字段 的相关文章

随机推荐

  • 从 $_GET/$_POST 获取信息并将其保存到数据库的做法?

    当涉及到从 get post 获取信息并将信息保存到数据库时 当今的最佳实践是什么 数据是否仍像以前一样进行转义 或者是否还有其他做法 另外 HTMLPurifier 可以用在什么地方呢 我目前正在使用它来过滤富文本 切勿将 GET 中的数
  • 调试 .NET 程序集绑定又名查找使用的 dll 以及原因

    我们在运行时加载的引用 dll 上遇到了一些神秘的版本不匹配问题 错误如 无法加载文件或程序集 X 或其依赖项之一 找到的程序集的清单定义与程序集引用不匹配 HRESULT 异常 0x80131040 有没有办法调试程序集绑定 换句话说 我
  • JQuery 结合 $(document).ready 和 $('DropDown').change 声明

    我想运行一个函数 function myFunction 关于活动 document ready and如果某个下拉菜单发生变化 myDropDown change 有没有一个好的方法来合并这个声明 这样我就不需要两次单独的调用myFunc
  • redactor.js PastePlainText - 但需要按钮来粘贴 html

    我们的大多数客户抱怨从 Word 到我们的 redactor js 富文本编辑器字段的格式设置 我们升级为使用pastePlainText 设置 这似乎效果很好 然而 有些客户仍然需要将 html 粘贴到富文本框中 我们使用插件在工具栏上添
  • 在 Bash 中否定多个条件

    我意识到这是一个简单的问题 但由于 bash 中严格的语法要求 我发现很难得到答案 我有以下脚本 if z 1 z 2 then echo both arguments are set fi 当我不带参数运行它时 我得到以下输出 test
  • SQL Server:并发线程可以更新同一行吗?

    我有一个具有此 UPDATE 查询的存储过程 UPDATE TOP 1 Batch tbl SET locked 1 OUTPUT inserted batchId INTO batchId FROM Batch tbl WHERE loc
  • ASP.NET MVC 中的所有内置 ActionResults

    我正在寻找 ASP NET MVC 控制器中可用的内置 第 3 方将是一个额外的 ActionResults 列表 到目前为止 我发现了以下内容 ContentResult this Content ActionResult this Vi
  • 301 重定向与 DNS 更改:终止 301 重定向并更新子域的 DNS 是否安全?

    我有一个在子域上运行的站点 该子域已迁移到新服务器和新域名 为了保留搜索积分 我知道 301 重定向是处理迁移转换的正确方法 营销部门提到的 301 重定向是我从未听说过的 从技术角度来看 我不明白你必须维持重定向多长时间 有人可以解释一下
  • C++静态库中的共享全局变量:Linux

    在 C 中 静态库 A 定义了一个全局变量 foo B 和 C 是两个动态库 都依赖于 A 因此与 A 链接 静态 然后B和C最终加载在同一个进程中 例如 应用程序负载 B 和 C 如果我们在 Windows 环境中 我们将获得 foo 的
  • 如何检查访问者的IP地址是否仍然有效或在线?

    是否可以使用 IP 地址检查访问者是否仍然在线 我已经创建了一个 javascript 和 php 来检查访问者的 IP 地址 当他们使用 onLoad 和 onBeforeUnload 事件打开我的页面之一时 但在某些情况下 我的脚本无法
  • PHP 返回循环结果

    我对编码和 PHP 世界都是新手 想知道如何使用return循环时 例如我想返回 显示 1 10 但不使用 echo start 1 end 11 for start start lt end start start 1 echo star
  • 在 C 中将字节转换为 Int / uint

    我有一个无符号字符数组 248 充满字节 如 2F AF FF 00 EB AB CD EF 这个数组是我的字节流 我将来自 UART RS232 的数据存储为缓冲区 现在我想将字节转换回 uint16 和 int32 在 C 中 我使用
  • 按 Home 键后运行的 Android 服务

    我有一个 Android 服务 是使用 StartService 在应用程序的第一个 Activity 的 OnCreate 中创建的 我需要此服务在应用程序的整个生命周期中运行 即应用程序中的所有活动 但在用户按下主页键或后退按钮后 服务
  • Android java.net.SocketTimeoutException:连接超时

    最近我的程序中遇到了以下错误 11 18 12 30 30 259 W System err 21368 java net SocketTimeoutException Connection timed out 11 18 12 30 30
  • Typescript Mongoose 以类型安全的方式忽略查询结果中的某些字段

    我正在使用 Nestjs 和 Mongoose 我需要获取用户配置文件 但忽略 Mongodb 中的密码 我的用户架构如下所示 Schema export class User extends Document Prop required
  • 如何将字节数组数据放入DoubleBuffer

    我想从字节数组中提取一组坐标到 DoubleBuffer 中 下面是如何将一组坐标从主字节数组提取到另一个字节数组的示例 byte intPoints new byte 4 byte geomCoords is new ByteArrayI
  • .net WebService,绕过 ssl 验证!

    好吧 我正在使用一个 Web 服务 该服务的证书未 100 正确设置 该证书是为域 domain1 com 设置的 并且 api 位于soap shop domain1 com SOAP 现在我无法连接到此webservice 然后我得到一
  • GetModuleHandle(),用于另一个进程中的 DLL

    标题确实解释了这一切 我有一个进程利用另一个进程 我需要能够在该程序上获取某个非 Windows 标准的 DLL 并且我没有主程序的源代码 我需要使用它通过 GetProcAddress 调用导出函数 并最终在 CreateRemoteTh
  • 比较Java中不同类的对象字段

    我有两个对象 每个对象都有数十个字段 Class1 int firstProperty String secondProperty Class2 int propertyOne String propertyTwo 虽然有些字段的名称不同
  • 使 WooCommerce 中不需要结账地址字段

    在 Woocommerce 中 我试图使用下面的代码使结账地址字段不需要 但我有这个错误提交结帐表格时 请输入地址以继续 我设置不需要的地址结帐字段的代码 add filter woocommerce billing fields wc n