在 woocommerce 结帐页面中验证电话号码

Vid*_*thy 0 wordpress woocommerce

我想在woocommerce的结帐页面中为电话号码添加自定义验证。我该怎么做呢??

小智 8

在我看来,不需要覆盖默认的 Woocommerce 字段,也不需要使用 Javascript 验证。
您可以添加自定义验证,该验证将添加到 Woocommerce 的默认计费电话字段验证中,挂钩到提交结帐后触发的操作。

这是我刚刚为客户实现的代码。

// Custom validation for Billing Phone checkout field
add_action('woocommerce_checkout_process', 'custom_validate_billing_phone');
function custom_validate_billing_phone() {
    $is_correct = preg_match('/^[0-9]{6,20}$/', $_POST['billing_phone']);
    if ( $_POST['billing_phone'] && !$is_correct) {
        wc_add_notice( __( 'The Phone field should be <strong>between 6 and 20 digits</strong>.' ), 'error' );
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,preg_match您可以检查其他任何内容并根据需要调整条件代码,而不是我的。

当然,您还可以$_POST在正确设置后通过检查正确的变量或您自己的自定义结帐字段来为其他默认字段添加自定义验证,但这是另一个主题:)

希望这可以帮助。


ome*_*ooq 0

默认情况下,woocommerce 已经具有正则表达式验证。最简单的方法是通过 jquery 验证它。

编辑:尽量不要对 woocommerce 核心进行任何更改,因为它们将在下次更新时被覆盖。试试这个代码

// Hook in
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
     $fields['shipping']['shipping_phone'] = array(
        'label'     => __('Phone', 'woocommerce'),
    'placeholder'   => _x('Phone', 'placeholder', 'woocommerce'),
    'required'  => true,
    'class'     => array('form-row-wide'),
    'clear'     => true
     );

     return $fields;
}
Run Code Online (Sandbox Code Playgroud)