wordpress - 如何在 woocommerce 中的自定义注册表单上获取所有错误消息
问题描述
但是,我有一个由本教程提供的自定义注册表单;如果我将所有必填字段留空,我似乎一次只收到一个错误,这很烦人,例如,如果尝试提交我的表单而没有电子邮件、姓名和姓氏;我得到的唯一错误是关于电子邮件的,只有在我解决了电子邮件错误之后,我才会收到其他错误,我必须一个一个地解决它们,有没有一种方法可以验证整个表单而不是逐个字段? 我怀疑我之所以会出现这种行为是因为wc_create_new_customer函数中的返回
解决方案
找到了解决这个问题的方法,我只想为任何走过死亡阴影谷的人回答这个问题,我最终做的是使用woocommerce_process_registration_errors
过滤器,我可以用它来验证所有注册字段并将所有错误添加到一口气wc_create_new_customer
,我开始wc_user_functions
像这样复制一些验证
add_filter('woocommerce_process_registration_errors', 'validate_registration_fields', 10, 4 );
function validate_registration_fields($errors, $unsername, $password, $email) {
// Email empty wc-form-handler and wc-user-functions
if ( empty( $email ) || ! WC_Validation::is_email( $email ) ) {
$errors->add( 'registration-error-invalid-email', __( 'Please provide a valid email address.', 'woocommerce' ) );
}
// Email exists
if ( email_exists( $email ) ) {
$errors->add( 'registration-error-email-exists', __( 'An account is already registered with your email address. Please log in.', 'woocommerce' ) );
}
// more validation code here
return $errors;
}
推荐阅读
- c# - Unity & C# 如何检查图像的高度/宽度或名称?
- swift - 如何为所有类型扩展可选链
- r - 在无需重新启动服务器的情况下更改代码后,立即在浏览器中看到 R 闪亮 UI 的变化?
- mithril.js - 秘银:如何使用多个根元素?
- c++ - 如何将数值库函数与成对向量一起使用?
- flutter - 如何在颤动的 DataTable DataCell 中添加列小部件?
- jax-rs - 在 tomee 上自动部署战争
- swift - 为什么 Swift 类需要 init 而不是 Swift struct
- c - 减少互斥体的开销
- python - Python键盘按下时间和两次击键之间的时间