Phi*_*ath 9 php validation wordpress checkout woocommerce
我想添加自己的正则表达式来验证电话号码.在我,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;
}
Run Code Online (Sandbox Code Playgroud)
但验证没有发生.我错过了什么?
r4c*_*oon 15
我还没有看到你的代码将这些内容挂钩到woocommerce结帐流程.请查看他们的文档
woocommerce_checkout_process 和 woocommerce_checkout_order_processed
但在你的情况下,我强烈建议你把它连接起来 woocommerce_checkout_process
所以把这些代码放在你的主题的functions.php上,或者你创建自己的woocommerce插件,并把它放在bootstrap代码中.
add_action('woocommerce_checkout_process', 'is_phone');
function is_phone() {
$phone_number = $_POST['---your-phone-field-name---'];
// your function's body above, and if error, call this wc_add_notice
wc_add_notice( __( 'Your phone number is wrong.' ), 'error' );
}
Run Code Online (Sandbox Code Playgroud)
小智 11
面对同样的问题并遵循其他人在此处所说的内容,但Woocommerce仅在woocommerce_checkout_process挂钩后设置验证错误.
但是,在最新的Woocommerce 3.0中(不确定这是否在2.x版本中),我们可以使用woocommerce_after_checkout_validation钩子然后查看$data参数,如果您使用的是标准结帐字段,或者$_POST如果您有自定义字段则使用t以标准的Woocommerce方式添加.代码示例如下:
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);
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
你不应该编辑插件文件,因为如果你更新插件,所有的自定义都将丢失,而你可以使用hook来实现你的目标.您可以使用
woocommerce_checkout_processhook来执行此操作.
这是代码:
add_action('woocommerce_checkout_process', 'wh_phoneValidateCheckoutFields');
function wh_phoneValidateCheckoutFields() {
$billing_phone = filter_input(INPUT_POST, 'billing_phone');
if (strlen(trim(preg_replace('/^[6789]\d{9}$/', '', $billing_phone))) > 0) {
wc_add_notice(__('Invalid <strong>Phone Number</strong>, please check your input.'), 'error');
}
}
Run Code Online (Sandbox Code Playgroud)
代码functions.php包含在您的活动子主题(或主题)的文件中.或者也可以在任何插件PHP文件中.
请注意:默认情况下,WooCommerce使用billing_phone字段来获取电话号码,但如果您已对其进行了自定义,则可以billing_phone使用您的字段名称替换.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
30242 次 |
| 最近记录: |