Php WooCommerce验证帐单\地址\ 1签出字段

Php WooCommerce验证帐单\地址\ 1签出字段,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在尝试验证我们的WooCommerce结帐字段之一,即billing_address_1 现在,该字段将接受任何地址,但在处理之前应检查地址字段是否包含数字。不确定在商业中应该如何做到这一点。我也会接受任何其他非商业的解决方案 网址为: 您应该在签出时查看此字段: 您可以对此使用自定义验证。根据您的要求更改以下代码: add_action('woocommerce_checkout_process', 'is_phone'); function is_phone() { $add

我正在尝试验证我们的WooCommerce结帐字段之一,即billing_address_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' );
}

以下是您可以通过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' );
}

这就是我一直在寻找的答案,我直接从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.' ); 
    }
}

我没有做任何特别的事情,只是简单地粘贴了你在函数中提供的内容。php除非你对代码做了一些更改,否则这应该可以工作。试着用核心Woocommerce模板文件检查它。当我对这四个变量进行var_转储时,它们都返回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);这些字段不知怎么会有不同的名称吗?我怎样才能追踪它们现在是什么?