【问题标题】:Set a unique validation error notice in Woocommerce checkout page在 Woocommerce 结帐页面中设置唯一的验证错误通知
【发布时间】:2019-03-29 23:19:56
【问题描述】:

如果必填字段为空,Woocommerce 结帐页面会显示个别错误。通常,如果所有字段都为空,则会显示这些空字段的所有错误:
- 名字是必填字段
- 姓氏是必填字段
- 街道地址是必填字段
- 城镇/城市是必填字段
等等……

如果所有必填字段都为空,是否可以只显示一个错误?就像“错误:所有字段都是空的。请填写所有必填字段以下订单。”如何做到这一点?

结帐页面

【问题讨论】:

    标签: php wordpress validation woocommerce checkout


    【解决方案1】:

    要在 Woocommerce 结帐页面中设置唯一的验证错误通知,您将使用以下代码:(代码主要来自您的上一个问题,对社区有用。刚刚更改为官方函数参数代码)

    add_action( 'woocommerce_after_checkout_validation', 'checkout_validation_unique_error', 9999, 2 );
    function checkout_validation_unique_error( $data, $errors ){
        // Check for any validation errors
        if( ! empty( $errors->get_error_codes() ) ) {
    
            // Remove all validation errors
            foreach( $errors->get_error_codes() as $code ) {
                $errors->remove( $code );
            }
    
            // Add a unique custom one
            $errors->add( 'validation', 'Please fill in all required fields to place order.' );
        }
    }
    

    代码进入您的活动子主题(活动主题)的 function.php 文件中。经过测试并且可以工作。

    相关: Set a unique validation error notice in Woocommerce My Account Addresses and Account Details

    【讨论】:

      【解决方案2】:

      您需要禁用当前的错误检查并为结帐页面编写自定义 javascript,以便将所有错误放在一条消息中。

      没有原生的 WooCommerce 功能可以做到这一点。

      要删除验证,请转到您的 checkout.php 模板并从 html 字段中删除 required 属性。

      结帐this link 了解如何将 HTML 和 javascript 添加到结帐页面。

      【讨论】:

      • 感谢这个 Difster。但我现在的问题是如何禁用此字段的当前错误检查。
      【解决方案3】:

      hHi,您可以从结帐字段中删除验证并添加您的:

      这是钩子:

      add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
      

      更多,可以去

      therichpost

      【讨论】:

      • 感谢 Ajay 的这个钩子。但我不认为我可以轻松删除结帐字段的验证,因为它的验证在 woocommerce 中包含文件夹。但我会试试这个钩子。我会告诉你它是否有效。
      • 当然@natnat,如果您需要更多帮助,可以联系我...therichpost
      • 嗨@natnat,你能告诉我你的代码吗,或者你可以联系我寻求解决方案。
      【解决方案4】:

      它通常在您按下结帐按钮时显示。但是如果您在页面加载时观看它。那么也许它来自woocommerce错误。你应该更新 woocommerce 插件。我希望当你更新插件时这个错误会消失。

      但在那之后,如果您遇到同样的问题,请联系我。我会看的。

      谢谢

      【讨论】:

      • 其实这不是错误。这就是当特定字段为空时 woocommerce 的反应方式。我只想覆盖所有字段为空时弹出的所有错误。
      • 然后你可以使用这个过滤器修改它 add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
      猜你喜欢
      • 1970-01-01
      • 2019-05-14
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2016-09-03
      • 1970-01-01
      • 2013-02-06
      相关资源
      最近更新 更多