首页 > 解决方案 > 如何在 woocommerce 中的自定义注册表单上获取所有错误消息

问题描述

但是,我有一个由教程提供的自定义注册表单;如果我将所有必填字段留空,我似乎一次只收到一个错误,这很烦人,例如,如果尝试提交我的表单而没有电子邮件、姓名和姓氏;我得到的唯一错误是关于电子邮件的,只有在我解决了电子邮件错误之后,我才会收到其他错误,我必须一个一个地解决它们,有没有一种方法可以验证整个表单而不是逐个字段? 我怀疑我之所以会出现这种行为是因为wc_create_new_customer函数中的返回

标签: wordpresswoocommercewordpress-theming

解决方案


找到了解决这个问题的方法,我只想为任何走过死亡阴影谷的人回答这个问题,我最终做的是使用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;
}

推荐阅读