From 6989532274c8cd27f34187abb1c354a5698721a6 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 19 Jun 2019 18:09:28 -0300 Subject: [PATCH] Allow display multiple error messages through registration validation --- includes/class-wc-form-handler.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/includes/class-wc-form-handler.php b/includes/class-wc-form-handler.php index e2d4bac9761..d2905dd8562 100644 --- a/includes/class-wc-form-handler.php +++ b/includes/class-wc-form-handler.php @@ -1095,11 +1095,17 @@ class WC_Form_Handler { $email = wp_unslash( $_POST['email'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized try { - $validation_error = new WP_Error(); - $validation_error = apply_filters( 'woocommerce_process_registration_errors', $validation_error, $username, $password, $email ); + $validation_error = new WP_Error(); + $validation_error = apply_filters( 'woocommerce_process_registration_errors', $validation_error, $username, $password, $email ); + $validation_errors = $validation_error->get_error_messages(); - if ( $validation_error->get_error_code() ) { + if ( 1 === count( $validation_errors ) ) { throw new Exception( $validation_error->get_error_message() ); + } elseif ( $validation_errors ) { + foreach ( $validation_errors as $message ) { + wc_add_notice( '' . __( 'Error:', 'woocommerce' ) . ' ' . $message, 'error' ); + } + throw new Exception(); } $new_customer = wc_create_new_customer( sanitize_email( $email ), wc_clean( $username ), $password ); @@ -1130,7 +1136,9 @@ class WC_Form_Handler { exit; } } catch ( Exception $e ) { - wc_add_notice( '' . __( 'Error:', 'woocommerce' ) . ' ' . $e->getMessage(), 'error' ); + if ( $e->getMessage() ) { + wc_add_notice( '' . __( 'Error:', 'woocommerce' ) . ' ' . $e->getMessage(), 'error' ); + } } } }