php - WooCommerce 结帐字段的自定义验证

标签 php wordpress validation woocommerce checkout

我想添加自己的正则表达式来验证电话号码。在我的 class-wc-validation.php 中,我已将正则表达式更改为我的要求。

public static function is_phone( $phone ) {
    //if ( strlen( trim( preg_replace( '/[\s\#0-9_\-\+\(\)]/', '', $phone ) ) ) > 0 )
    if ( strlen( trim( preg_replace( '/^[6789]\d{9}$/', '', $phone ) ) ) > 0 )
        return false;

    return true;
}

但是验证没有发生。我错过了什么?

最佳答案

面临着同样的问题并按照其他人在这里所说的进行操作,但 Woocommerce 仅在 woocommerce_checkout_process Hook 后设置验证错误。

但是,在最新的 Woocommerce 3.0 中(不确定这是否在 2.x 版本中),我们可以使用 woocommerce_after_checkout_validation 钩子(Hook)然后查看 $data param 如果您使用的是标准结帐字段,或者如果您有未以标准 Woocommerce 方式添加的自定义字段,则使用 $_POST。代码示例如下:

public function validate($data,$errors) { 
    // Do your data processing here and in case of an 
    // error add it to the errors array like:
        $errors->add( 'validation', __( 'Please input that correctly.' ));
}
add_action('woocommerce_after_checkout_validation', 'validate',10,2);

希望对您有所帮助!

关于php - WooCommerce 结帐字段的自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603144/

相关文章:

php - 如何在 PHP 中检查日期的格式?

php - 尝试登录时 Yii2 中的错误请求 (#400)

javascript - 当选中多个复选框时验证其他内容

wordpress - Woocommerce 显示每个类别及其产品

JavaScript 定时器/Bootstrap/Wordpress

python - Django 模型——多对多中的至少一个

validation - 当用户想要覆盖时,JSF 表单验证会跳过第二次提交的特定验证器

php - 从android发送数据到php,php存储一个序列?在mysql中

php - 如何访问 Moodle 中 Mustache 模板中对象数组的值?

php - 使用子字符串从动态变量中删除字符