Skip to content

Commit caf82a5

Browse files
authored
fix(email-change): ensure success and error messages persist after redirect (#3913)
1 parent dc96e5b commit caf82a5

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

includes/class-donations.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,6 +1115,9 @@ public static function update_billing_fields( $billing_fields ) {
11151115
* @return bool
11161116
*/
11171117
public static function disable_coupons( $enabled ) {
1118+
if ( ! did_action( 'woocommerce_after_register_post_type' ) ) {
1119+
return $enabled;
1120+
}
11181121
if ( is_admin() ) {
11191122
return $enabled;
11201123
}

includes/reader-revenue/my-account/class-woocommerce-my-account.php

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -936,7 +936,8 @@ public static function handle_verify_email_change() {
936936
if ( ! $secret ) {
937937
return;
938938
}
939-
$error = __( 'Something went wrong.', 'newspack-plugin' );
939+
$message = __( 'Your email address has been successfully updated.', 'newspack-plugin' );
940+
$is_error = false;
940941
$user_id = \get_current_user_id();
941942
$new_email = \get_user_meta( $user_id, self::PENDING_EMAIL_CHANGE_META, true );
942943
$old_email = \wp_get_current_user()->user_email;
@@ -955,14 +956,27 @@ public static function handle_verify_email_change() {
955956
self::maybe_sync_email_change_with_stripe( $user_id, $new_email );
956957
self::sync_email_change_with_esp( $user_id, $new_email, $old_email );
957958
\delete_user_meta( $user_id, self::PENDING_EMAIL_CHANGE_META );
958-
\wc_add_notice( __( 'Your email address has been successfully updated.', 'newspack-plugin' ) );
959959
} else {
960-
\wc_add_notice( $error, 'error' );
960+
$message = __( 'Something went wrong.', 'newspack-plugin' );
961+
$is_error = true;
961962
}
962963
} else {
963-
\wc_add_notice( __( 'This email change request has been cancelled or expired.', 'newspack-plugin' ), 'error' );
964+
$message = __( 'This email change request has been cancelled or expired.', 'newspack-plugin' );
965+
$is_error = true;
964966
}
965-
\wp_safe_redirect( \wc_get_endpoint_url( 'edit-account', '', \wc_get_page_permalink( 'myaccount' ) ) );
967+
\wp_safe_redirect(
968+
\add_query_arg(
969+
[
970+
'message' => $message,
971+
'is_error' => $is_error,
972+
],
973+
\wc_get_endpoint_url(
974+
'edit-account',
975+
'',
976+
\wc_get_page_permalink( 'myaccount' )
977+
)
978+
)
979+
);
966980
exit;
967981
}
968982

@@ -978,13 +992,27 @@ public static function handle_cancel_email_change() {
978992
return;
979993
}
980994
$current_email = \wp_get_current_user()->user_email;
995+
$message = __( 'Your email address change request has been cancelled.', 'newspack-plugin' );
996+
$is_error = false;
981997
if ( \wp_hash( $current_email ) === $secret ) {
982998
\delete_user_meta( \get_current_user_id(), self::PENDING_EMAIL_CHANGE_META );
983-
\wc_add_notice( __( 'Your email change request has been cancelled.', 'newspack-plugin' ) );
984999
} else {
985-
\wc_add_notice( __( 'This email change request has been cancelled or expired.', 'newspack-plugin' ), 'error' );
1000+
$message = __( 'This email change request has been cancelled or expired.', 'newspack-plugin' );
1001+
$is_error = true;
9861002
}
987-
\wp_safe_redirect( \wc_get_endpoint_url( 'edit-account', '', \wc_get_page_permalink( 'myaccount' ) ) );
1003+
\wp_safe_redirect(
1004+
\add_query_arg(
1005+
[
1006+
'message' => $message,
1007+
'is_error' => $is_error,
1008+
],
1009+
\wc_get_endpoint_url(
1010+
'edit-account',
1011+
'',
1012+
\wc_get_page_permalink( 'myaccount' )
1013+
)
1014+
)
1015+
);
9881016
exit;
9891017
}
9901018

0 commit comments

Comments
 (0)