【问题标题】:WooCommerce validate billing_address_1 checkout fieldWooCommerce 验证 billing_address_1 结帐字段
【发布时间】:2017-04-24 09:19:10
【问题描述】:

我正在尝试验证我们的 WooCommerce 结帐字段之一,即 billing_address_1。

现在,该字段将接受任何地址,但它应该在处理之前检查地址字段是否包含数字。不知道这应该如何在 WooCommerce 中完成。我也会接受任何其他非 WooCommerce 的解决方案。

网址是:https://www.prikkabelled.nl

您应该在结帐时查看此字段:

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    您可以为此使用自定义验证。根据您的要求更改以下代码:

    add_action('woocommerce_checkout_process', 'is_phone');
    
    function is_phone() { 
        $addr1 = $_POST['billing_address_1'];
        // check condition if number not found in address
        if(false)
            wc_add_notice( __( 'Address does not contain a number.' ), 'error' );
    }
    

    【讨论】:

      【解决方案2】:

      这是您可以通过functions.php添加到结帐进度的步骤

      add_action('woocommerce_checkout_process', 'custom_checkout_field_check');
      
      function custom_checkout_field_check() {
          // Check if set, if its not set add an error.
          if ( $_POST['billing_address_1'] && strpbrk($_POST['billing_address_1'], '1234567890') !== FALSE )
              wc_add_notice( __( 'Your address field contains numeric value' ), 'error' );
      }
      

      【讨论】:

      • 我没有做任何特别的事情,只是将您提供的内容粘贴在functions.php中
      • 这应该可以工作,除非您对代码进行了更改。尝试使用核心 Woocommerce 模板文件检查它。
      • 当我对这四个变量进行 var_dump 时,它们都返回 bool(false)。 var_dump($_POST['billing_address_1'] == true); var_dump($_POST['billing_address_2'] == true); var_dump($_POST['billing_postcode'] == true); var_dump($_POST['billing_email'] == true);这些字段是否以某种方式获得了不同的名称?我如何追踪它们现在的情况?
      【解决方案3】:

      这是我一直在寻找的答案,我直接从 WooCommerce 开发者社区获得。

      // Check if address field contains house number otherwise provide error message
      
      add_action( 'woocommerce_after_checkout_validation', 'validate_checkout', 10, 2); 
      
      function validate_checkout( $data, $errors ){ 
          if (  ! preg_match('/[0-9]/', $data[ 'billing_address_1' ] ) ){ 
              $errors->add( 'address', 'Sorry, but the address you provided does not contain a house number.' ); 
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-03-14
        • 1970-01-01
        • 2015-04-20
        • 2021-07-02
        • 1970-01-01
        • 2018-11-02
        • 2015-04-20
        • 2019-05-14
        • 2019-04-21
        相关资源
        最近更新 更多