我想添加自己的正则表达式来验证电话号码。在我的 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/