Update tracked WordPress core files

This commit is contained in:
2026-06-14 19:30:16 -04:00
parent 3ddfd8d665
commit 378ff6510f
6 changed files with 69 additions and 29 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
WordPress - Web publishing software WordPress - Web publishing software
Copyright 2011-2025 by the contributors Copyright 2011-2026 by the contributors
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -5,7 +5,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex,nofollow" /> <meta name="robots" content="noindex,nofollow" />
<title>WordPress &#8250; ReadMe</title> <title>WordPress &#8250; ReadMe</title>
<link rel="stylesheet" href="wp-admin/css/install.css?ver=20100228" type="text/css" /> <link rel="stylesheet" href="wp-admin/css/install.css?ver=20100228" />
</head> </head>
<body> <body>
<h1 id="logo"> <h1 id="logo">
@@ -52,7 +52,7 @@
<h2>System Requirements</h2> <h2>System Requirements</h2>
<ul> <ul>
<li><a href="https://www.php.net/">PHP</a> version <strong>7.2.24</strong> or greater.</li> <li><a href="https://www.php.net/">PHP</a> version <strong>7.4</strong> or greater.</li>
<li><a href="https://www.mysql.com/">MySQL</a> version <strong>5.5.5</strong> or greater.</li> <li><a href="https://www.mysql.com/">MySQL</a> version <strong>5.5.5</strong> or greater.</li>
</ul> </ul>
+8 -7
View File
@@ -100,13 +100,14 @@ add_action( 'wp_head', 'do_activate_header' );
*/ */
function wpmu_activate_stylesheet() { function wpmu_activate_stylesheet() {
?> ?>
<style type="text/css"> <style>
.wp-activate-container { width: 90%; margin: 0 auto; } .wp-activate-container { width: 90%; margin: 0 auto; text-align: start; padding: 24px; box-sizing: border-box; }
.wp-activate-container form { margin-top: 2em; } .wp-activate-container form { margin: 24px 0; }
#submit, #key { width: 100%; font-size: 24px; box-sizing: border-box; } .wp-activate-container p { font-size: 18px; }
#language { margin-top: 0.5em; } #key, #submit { font-size: 24px; box-sizing: border-box; margin: 5px 0; }
.wp-activate-container .error { background: #f66; color: #333; } #key { width: 100%; direction: ltr; }
span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: 600; } #submit { width: auto; }
span.h3 { font-weight: 600; }
</style> </style>
<?php <?php
} }
+20 -13
View File
@@ -166,7 +166,7 @@ function login_header( $title = null, $message = '', $wp_error = null ) {
*/ */
$login_header_text = apply_filters( 'login_headertext', $login_header_text ); $login_header_text = apply_filters( 'login_headertext', $login_header_text );
$classes = array( 'login-action-' . $action, 'wp-core-ui' ); $classes = array( 'login-action-' . $action, 'wp-core-ui', 'admin-color-modern' );
if ( is_rtl() ) { if ( is_rtl() ) {
$classes[] = 'rtl'; $classes[] = 'rtl';
@@ -176,7 +176,7 @@ function login_header( $title = null, $message = '', $wp_error = null ) {
$classes[] = 'interim-login'; $classes[] = 'interim-login';
?> ?>
<style type="text/css">html{background-color: transparent;}</style> <style>html{background-color: transparent;}</style>
<?php <?php
if ( 'success' === $interim_login ) { if ( 'success' === $interim_login ) {
@@ -184,7 +184,7 @@ function login_header( $title = null, $message = '', $wp_error = null ) {
} }
} }
$classes[] = ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) ); $classes[] = 'locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
/** /**
* Filters the login page body classes. * Filters the login page body classes.
@@ -397,13 +397,13 @@ function login_footer( $input_id = '' ) {
); );
/** /**
* Filters default arguments for the Languages select input on the login screen. * Filters default arguments for the Language select input on the login screen.
* *
* The arguments get passed to the wp_dropdown_languages() function. * The arguments get passed to the wp_dropdown_languages() function.
* *
* @since 5.9.0 * @since 5.9.0
* *
* @param array $args Arguments for the Languages select input on the login screen. * @param array $args Arguments for the Language select input on the login screen.
*/ */
wp_dropdown_languages( apply_filters( 'login_language_dropdown_args', $args ) ); wp_dropdown_languages( apply_filters( 'login_language_dropdown_args', $args ) );
?> ?>
@@ -897,7 +897,7 @@ switch ( $action ) {
<form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post"> <form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post">
<p> <p>
<label for="user_login"><?php _e( 'Username or Email Address' ); ?></label> <label for="user_login"><?php _e( 'Username or Email Address' ); ?></label>
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" autocomplete="username" required="required" /> <input type="text" name="user_login" id="user_login" class="input ltr" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" autocomplete="username" required="required" />
</p> </p>
<?php <?php
@@ -1000,7 +1000,6 @@ switch ( $action ) {
if ( ( ! $errors->has_errors() ) && isset( $_POST['pass1'] ) && ! empty( $_POST['pass1'] ) ) { if ( ( ! $errors->has_errors() ) && isset( $_POST['pass1'] ) && ! empty( $_POST['pass1'] ) ) {
reset_password( $user, $_POST['pass1'] ); reset_password( $user, $_POST['pass1'] );
setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
login_header( login_header(
__( 'Password Reset' ), __( 'Password Reset' ),
wp_get_admin_notice( wp_get_admin_notice(
@@ -1040,7 +1039,7 @@ switch ( $action ) {
</p> </p>
<div class="wp-pwd"> <div class="wp-pwd">
<input type="password" name="pass1" id="pass1" class="input password-input" size="24" value="" autocomplete="new-password" spellcheck="false" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" aria-describedby="pass-strength-result" /> <input type="password" name="pass1" id="pass1" class="input password-input ltr" size="24" value="" autocomplete="new-password" spellcheck="false" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" aria-describedby="pass-strength-result" />
<button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php esc_attr_e( 'Hide password' ); ?>"> <button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php esc_attr_e( 'Hide password' ); ?>">
<span class="dashicons dashicons-hidden" aria-hidden="true"></span> <span class="dashicons dashicons-hidden" aria-hidden="true"></span>
@@ -1168,7 +1167,7 @@ switch ( $action ) {
<form name="registerform" id="registerform" action="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login_post' ) ); ?>" method="post" novalidate="novalidate"> <form name="registerform" id="registerform" action="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login_post' ) ); ?>" method="post" novalidate="novalidate">
<p> <p>
<label for="user_login"><?php _e( 'Username' ); ?></label> <label for="user_login"><?php _e( 'Username' ); ?></label>
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" autocomplete="username" required="required" /> <input type="text" name="user_login" id="user_login" class="input ltr" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" autocomplete="username" required="required" />
</p> </p>
<p> <p>
<label for="user_email"><?php _e( 'Email' ); ?></label> <label for="user_email"><?php _e( 'Email' ); ?></label>
@@ -1462,10 +1461,10 @@ switch ( $action ) {
if ( ! empty( $query['app_name'] ) ) { if ( ! empty( $query['app_name'] ) ) {
/* translators: 1: Website name, 2: Application name. */ /* translators: 1: Website name, 2: Application name. */
$message = sprintf( 'Please log in to %1$s to authorize %2$s to connect to your account.', get_bloginfo( 'name', 'display' ), '<strong>' . esc_html( $query['app_name'] ) . '</strong>' ); $message = sprintf( __( 'Please log in to %1$s to authorize %2$s to connect to your account.' ), get_bloginfo( 'name', 'display' ), '<strong>' . esc_html( $query['app_name'] ) . '</strong>' );
} else { } else {
/* translators: %s: Website name. */ /* translators: %s: Website name. */
$message = sprintf( 'Please log in to %s to proceed with authorization.', get_bloginfo( 'name', 'display' ) ); $message = sprintf( __( 'Please log in to %s to proceed with authorization.' ), get_bloginfo( 'name', 'display' ) );
} }
$errors->add( 'authorize_application', $message, 'message' ); $errors->add( 'authorize_application', $message, 'message' );
@@ -1487,6 +1486,14 @@ switch ( $action ) {
wp_clear_auth_cookie(); wp_clear_auth_cookie();
} }
// Obtain user from password reset cookie flow before clearing the cookie.
$rp_cookie = 'wp-resetpass-' . COOKIEHASH;
if ( isset( $_COOKIE[ $rp_cookie ] ) && is_string( $_COOKIE[ $rp_cookie ] ) ) {
$user_login = sanitize_user( strtok( wp_unslash( $_COOKIE[ $rp_cookie ] ), ':' ) );
list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
}
login_header( __( 'Log In' ), '', $errors ); login_header( __( 'Log In' ), '', $errors );
if ( isset( $_POST['log'] ) ) { if ( isset( $_POST['log'] ) ) {
@@ -1512,13 +1519,13 @@ switch ( $action ) {
<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post"> <form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
<p> <p>
<label for="user_login"><?php _e( 'Username or Email Address' ); ?></label> <label for="user_login"><?php _e( 'Username or Email Address' ); ?></label>
<input type="text" name="log" id="user_login"<?php echo $aria_describedby; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" autocomplete="username" required="required" /> <input type="text" name="log" id="user_login"<?php echo $aria_describedby; ?> class="input ltr" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" autocomplete="username" required="required" />
</p> </p>
<div class="user-pass-wrap"> <div class="user-pass-wrap">
<label for="user_pass"><?php _e( 'Password' ); ?></label> <label for="user_pass"><?php _e( 'Password' ); ?></label>
<div class="wp-pwd"> <div class="wp-pwd">
<input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby; ?> class="input password-input" value="" size="20" autocomplete="current-password" spellcheck="false" required="required" /> <input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby; ?> class="input password-input ltr" value="" size="20" autocomplete="current-password" spellcheck="false" required="required" />
<button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php esc_attr_e( 'Show password' ); ?>"> <button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php esc_attr_e( 'Show password' ); ?>">
<span class="dashicons dashicons-visibility" aria-hidden="true"></span> <span class="dashicons dashicons-visibility" aria-hidden="true"></span>
</button> </button>
+30 -1
View File
@@ -140,7 +140,9 @@ require_wp_db();
* *
* @global string $table_prefix The database table prefix. * @global string $table_prefix The database table prefix.
*/ */
$GLOBALS['table_prefix'] = $table_prefix; if ( ! isset( $GLOBALS['table_prefix'] ) ) {
$GLOBALS['table_prefix'] = $table_prefix;
}
// Set the database table prefix and the format specifiers for database table columns. // Set the database table prefix and the format specifiers for database table columns.
wp_set_wpdb_vars(); wp_set_wpdb_vars();
@@ -240,6 +242,12 @@ require ABSPATH . WPINC . '/kses.php';
require ABSPATH . WPINC . '/cron.php'; require ABSPATH . WPINC . '/cron.php';
require ABSPATH . WPINC . '/deprecated.php'; require ABSPATH . WPINC . '/deprecated.php';
require ABSPATH . WPINC . '/script-loader.php'; require ABSPATH . WPINC . '/script-loader.php';
if ( file_exists( ABSPATH . WPINC . '/build/routes.php' ) ) {
require ABSPATH . WPINC . '/build/routes.php';
}
if ( file_exists( ABSPATH . WPINC . '/build/pages.php' ) ) {
require ABSPATH . WPINC . '/build/pages.php';
}
require ABSPATH . WPINC . '/taxonomy.php'; require ABSPATH . WPINC . '/taxonomy.php';
require ABSPATH . WPINC . '/class-wp-taxonomy.php'; require ABSPATH . WPINC . '/class-wp-taxonomy.php';
require ABSPATH . WPINC . '/class-wp-term.php'; require ABSPATH . WPINC . '/class-wp-term.php';
@@ -278,6 +286,17 @@ require ABSPATH . WPINC . '/class-wp-http-encoding.php';
require ABSPATH . WPINC . '/class-wp-http-response.php'; require ABSPATH . WPINC . '/class-wp-http-response.php';
require ABSPATH . WPINC . '/class-wp-http-requests-response.php'; require ABSPATH . WPINC . '/class-wp-http-requests-response.php';
require ABSPATH . WPINC . '/class-wp-http-requests-hooks.php'; require ABSPATH . WPINC . '/class-wp-http-requests-hooks.php';
require ABSPATH . WPINC . '/php-ai-client/autoload.php';
require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-http-client.php';
require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-cache.php';
require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-discovery-strategy.php';
require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-event-dispatcher.php';
require ABSPATH . WPINC . '/ai-client/class-wp-ai-client-ability-function-resolver.php';
require ABSPATH . WPINC . '/ai-client/class-wp-ai-client-prompt-builder.php';
require ABSPATH . WPINC . '/ai-client.php';
require ABSPATH . WPINC . '/class-wp-connector-registry.php';
require ABSPATH . WPINC . '/connectors.php';
require ABSPATH . WPINC . '/class-wp-icons-registry.php';
require ABSPATH . WPINC . '/widgets.php'; require ABSPATH . WPINC . '/widgets.php';
require ABSPATH . WPINC . '/class-wp-widget.php'; require ABSPATH . WPINC . '/class-wp-widget.php';
require ABSPATH . WPINC . '/class-wp-widget-factory.php'; require ABSPATH . WPINC . '/class-wp-widget-factory.php';
@@ -336,6 +355,7 @@ require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-navigation-fallback
require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-families-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-families-controller.php';
require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-faces-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-faces-controller.php';
require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-collections-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-collections-controller.php';
require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-icons-controller.php';
require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-categories-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-categories-controller.php';
require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php';
require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-run-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-run-controller.php';
@@ -386,6 +406,7 @@ require ABSPATH . WPINC . '/block-patterns.php';
require ABSPATH . WPINC . '/class-wp-block-supports.php'; require ABSPATH . WPINC . '/class-wp-block-supports.php';
require ABSPATH . WPINC . '/block-supports/utils.php'; require ABSPATH . WPINC . '/block-supports/utils.php';
require ABSPATH . WPINC . '/block-supports/align.php'; require ABSPATH . WPINC . '/block-supports/align.php';
require ABSPATH . WPINC . '/block-supports/auto-register.php';
require ABSPATH . WPINC . '/block-supports/custom-classname.php'; require ABSPATH . WPINC . '/block-supports/custom-classname.php';
require ABSPATH . WPINC . '/block-supports/generated-classname.php'; require ABSPATH . WPINC . '/block-supports/generated-classname.php';
require ABSPATH . WPINC . '/block-supports/settings.php'; require ABSPATH . WPINC . '/block-supports/settings.php';
@@ -402,7 +423,9 @@ require ABSPATH . WPINC . '/block-supports/shadow.php';
require ABSPATH . WPINC . '/block-supports/background.php'; require ABSPATH . WPINC . '/block-supports/background.php';
require ABSPATH . WPINC . '/block-supports/block-style-variations.php'; require ABSPATH . WPINC . '/block-supports/block-style-variations.php';
require ABSPATH . WPINC . '/block-supports/aria-label.php'; require ABSPATH . WPINC . '/block-supports/aria-label.php';
require ABSPATH . WPINC . '/block-supports/anchor.php';
require ABSPATH . WPINC . '/block-supports/block-visibility.php'; require ABSPATH . WPINC . '/block-supports/block-visibility.php';
require ABSPATH . WPINC . '/block-supports/custom-css.php';
require ABSPATH . WPINC . '/style-engine.php'; require ABSPATH . WPINC . '/style-engine.php';
require ABSPATH . WPINC . '/style-engine/class-wp-style-engine.php'; require ABSPATH . WPINC . '/style-engine/class-wp-style-engine.php';
require ABSPATH . WPINC . '/style-engine/class-wp-style-engine-css-declarations.php'; require ABSPATH . WPINC . '/style-engine/class-wp-style-engine-css-declarations.php';
@@ -424,6 +447,7 @@ require ABSPATH . WPINC . '/class-wp-plugin-dependencies.php';
require ABSPATH . WPINC . '/class-wp-url-pattern-prefixer.php'; require ABSPATH . WPINC . '/class-wp-url-pattern-prefixer.php';
require ABSPATH . WPINC . '/class-wp-speculation-rules.php'; require ABSPATH . WPINC . '/class-wp-speculation-rules.php';
require ABSPATH . WPINC . '/speculative-loading.php'; require ABSPATH . WPINC . '/speculative-loading.php';
require ABSPATH . WPINC . '/view-transitions.php';
add_action( 'after_setup_theme', array( wp_script_modules(), 'add_hooks' ) ); add_action( 'after_setup_theme', array( wp_script_modules(), 'add_hooks' ) );
add_action( 'after_setup_theme', array( wp_interactivity(), 'add_hooks' ) ); add_action( 'after_setup_theme', array( wp_interactivity(), 'add_hooks' ) );
@@ -447,6 +471,11 @@ $GLOBALS['wp_embed'] = new WP_Embed();
$GLOBALS['wp_textdomain_registry'] = new WP_Textdomain_Registry(); $GLOBALS['wp_textdomain_registry'] = new WP_Textdomain_Registry();
$GLOBALS['wp_textdomain_registry']->init(); $GLOBALS['wp_textdomain_registry']->init();
// WordPress AI Client initialization.
WP_AI_Client_Discovery_Strategy::init();
WordPress\AiClient\AiClient::setCache( new WP_AI_Client_Cache() );
WordPress\AiClient\AiClient::setEventDispatcher( new WP_AI_Client_Event_Dispatcher() );
// Load multisite-specific files. // Load multisite-specific files.
if ( is_multisite() ) { if ( is_multisite() ) {
require ABSPATH . WPINC . '/ms-functions.php'; require ABSPATH . WPINC . '/ms-functions.php';
+8 -5
View File
@@ -63,9 +63,10 @@ do_action( 'before_signup_header' );
*/ */
function wpmu_signup_stylesheet() { function wpmu_signup_stylesheet() {
?> ?>
<style type="text/css"> <style>
.mu_register { width: 90%; margin: 0 auto; } .mu_register { width: 90%; margin: 0 auto; text-align: start; padding: 24px; box-sizing: border-box; }
.mu_register form { margin-top: 2em; } .mu_register p { font-size: 18px; }
.mu_register form { margin: 24px 0; }
.mu_register fieldset, .mu_register fieldset,
.mu_register legend { margin: 0; padding: 0; border: none; } .mu_register legend { margin: 0; padding: 0; border: none; }
.mu_register .error { padding: 10px; color: #333; background: #ffebe8; border: 1px solid #c00; } .mu_register .error { padding: 10px; color: #333; background: #ffebe8; border: 1px solid #c00; }
@@ -74,6 +75,8 @@ function wpmu_signup_stylesheet() {
.mu_register #user_email, .mu_register #user_email,
.mu_register #blogname, .mu_register #blogname,
.mu_register #user_name { width: 100%; font-size: 24px; margin: 5px 0; box-sizing: border-box; } .mu_register #user_name { width: 100%; font-size: 24px; margin: 5px 0; box-sizing: border-box; }
.mu_register input[type="email"],
.mu_register #user_name { direction: ltr; }
.mu_register #site-language { display: block; } .mu_register #site-language { display: block; }
.mu_register .prefix_address, .mu_register .prefix_address,
.mu_register .suffix_address { font-size: 18px; display: inline-block; direction: ltr; } .mu_register .suffix_address { font-size: 18px; display: inline-block; direction: ltr; }
@@ -976,7 +979,7 @@ if ( 'none' === $active_signup ) {
/* translators: %s: Login URL. */ /* translators: %s: Login URL. */
printf( __( 'You must first <a href="%s">log in</a>, and then you can create a new site.' ), $login_url ); printf( __( 'You must first <a href="%s">log in</a>, and then you can create a new site.' ), $login_url );
} else { } else {
$stage = isset( $_POST['stage'] ) ? $_POST['stage'] : 'default'; $stage = $_POST['stage'] ?? 'default';
switch ( $stage ) { switch ( $stage ) {
case 'validate-user-signup': case 'validate-user-signup':
if ( 'all' === $active_signup if ( 'all' === $active_signup
@@ -1000,7 +1003,7 @@ if ( 'none' === $active_signup ) {
break; break;
case 'default': case 'default':
default: default:
$user_email = isset( $_POST['user_email'] ) ? $_POST['user_email'] : ''; $user_email = $_POST['user_email'] ?? '';
/** /**
* Fires when the site sign-up form is sent. * Fires when the site sign-up form is sent.
* *