Make WordPress Core

Changeset 51398


Ignore:
Timestamp:
07/10/2021 12:00:01 PM (5 years ago)
Author:
SergeyBiryukov
Message:

Users: Return earlier from wp_update_user() in case of error.

This ensures that if the wp_insert_user() call resulted in a WP_Error object, it is returned right away without any further actions.

Follow-up to [32820].

Fixes #53627.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/user.php

    r51353 r51398  
    22392239        $user_id  = wp_insert_user( $userdata );
    22402240
    2241         if ( ! is_wp_error( $user_id ) ) {
    2242 
    2243                 $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
    2244 
    2245                 $switched_locale = false;
    2246                 if ( ! empty( $send_password_change_email ) || ! empty( $send_email_change_email ) ) {
    2247                         $switched_locale = switch_to_locale( get_user_locale( $user_id ) );
    2248                 }
    2249 
    2250                 if ( ! empty( $send_password_change_email ) ) {
    2251                         /* translators: Do not translate USERNAME, ADMIN_EMAIL, EMAIL, SITENAME, SITEURL: those are placeholders. */
    2252                         $pass_change_text = __(
    2253                                 'Hi ###USERNAME###,
     2241        if ( is_wp_error( $user_id ) ) {
     2242                return $user_id;
     2243        }
     2244
     2245        $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
     2246
     2247        $switched_locale = false;
     2248        if ( ! empty( $send_password_change_email ) || ! empty( $send_email_change_email ) ) {
     2249                $switched_locale = switch_to_locale( get_user_locale( $user_id ) );
     2250        }
     2251
     2252        if ( ! empty( $send_password_change_email ) ) {
     2253                /* translators: Do not translate USERNAME, ADMIN_EMAIL, EMAIL, SITENAME, SITEURL: those are placeholders. */
     2254                $pass_change_text = __(
     2255                        'Hi ###USERNAME###,
    22542256
    22552257This notice confirms that your password was changed on ###SITENAME###.
    … …  
    22632265All at ###SITENAME###
    22642266###SITEURL###'
    2265                         );
    2266 
    2267                         $pass_change_email = array(
    2268                                 'to'      => $user['user_email'],
    2269                                 /* translators: Password change notification email subject. %s: Site title. */
    2270                                 'subject' => __( '[%s] Password Changed' ),
    2271                                 'message' => $pass_change_text,
    2272                                 'headers' => '',
    2273                         );
    2274 
    2275                         /**
    2276                         * Filters the contents of the email sent when the user's password is changed.
    2277                         *
    2278                         * @since 4.3.0
    2279                         *
    2280                         * @param array $pass_change_email {
    2281                         *     Used to build wp_mail().
    2282                         *
    2283                         *     @type string $to      The intended recipients. Add emails in a comma separated string.
    2284                         *     @type string $subject The subject of the email.
    2285                         *     @type string $message The content of the email.
    2286                         *         The following strings have a special meaning and will get replaced dynamically:
    2287                         *         - ###USERNAME###    The current user's username.
    2288                         *         - ###ADMIN_EMAIL### The admin email in case this was unexpected.
    2289                         *         - ###EMAIL###       The user's email address.
    2290                         *         - ###SITENAME###    The name of the site.
    2291                         *         - ###SITEURL###     The URL to the site.
    2292                         *     @type string $headers Headers. Add headers in a newline (\r\n) separated string.
    2293                         * }
    2294                         * @param array $user     The original user array.
    2295                         * @param array $userdata The updated user array.
    2296                         */
    2297                         $pass_change_email = apply_filters( 'password_change_email', $pass_change_email, $user, $userdata );
    2298 
    2299                         $pass_change_email['message'] = str_replace( '###USERNAME###', $user['user_login'], $pass_change_email['message'] );
    2300                         $pass_change_email['message'] = str_replace( '###ADMIN_EMAIL###', get_option( 'admin_email' ), $pass_change_email['message'] );
    2301                         $pass_change_email['message'] = str_replace( '###EMAIL###', $user['user_email'], $pass_change_email['message'] );
    2302                         $pass_change_email['message'] = str_replace( '###SITENAME###', $blog_name, $pass_change_email['message'] );
    2303                         $pass_change_email['message'] = str_replace( '###SITEURL###', home_url(), $pass_change_email['message'] );
    2304 
    2305                         wp_mail( $pass_change_email['to'], sprintf( $pass_change_email['subject'], $blog_name ), $pass_change_email['message'], $pass_change_email['headers'] );
    2306                 }
    2307 
    2308                 if ( ! empty( $send_email_change_email ) ) {
    2309                         /* translators: Do not translate USERNAME, ADMIN_EMAIL, NEW_EMAIL, EMAIL, SITENAME, SITEURL: those are placeholders. */
    2310                         $email_change_text = __(
    2311                                 'Hi ###USERNAME###,
     2267                );
     2268
     2269                $pass_change_email = array(
     2270                        'to'      => $user['user_email'],
     2271                        /* translators: Password change notification email subject. %s: Site title. */
     2272                        'subject' => __( '[%s] Password Changed' ),
     2273                        'message' => $pass_change_text,
     2274                        'headers' => '',
     2275                );
     2276
     2277                /**
     2278                * Filters the contents of the email sent when the user's password is changed.
     2279                *
     2280                * @since 4.3.0
     2281                *
     2282                * @param array $pass_change_email {
     2283                *     Used to build wp_mail().
     2284                *
     2285                *     @type string $to      The intended recipients. Add emails in a comma separated string.
     2286                *     @type string $subject The subject of the email.
     2287                *     @type string $message The content of the email.
     2288                *         The following strings have a special meaning and will get replaced dynamically:
     2289                *         - ###USERNAME###    The current user's username.
     2290                *         - ###ADMIN_EMAIL### The admin email in case this was unexpected.
     2291                *         - ###EMAIL###       The user's email address.
     2292                *         - ###SITENAME###    The name of the site.
     2293                *         - ###SITEURL###     The URL to the site.
     2294                *     @type string $headers Headers. Add headers in a newline (\r\n) separated string.
     2295                * }
     2296                * @param array $user     The original user array.
     2297                * @param array $userdata The updated user array.
     2298                */
     2299                $pass_change_email = apply_filters( 'password_change_email', $pass_change_email, $user, $userdata );
     2300
     2301                $pass_change_email['message'] = str_replace( '###USERNAME###', $user['user_login'], $pass_change_email['message'] );
     2302                $pass_change_email['message'] = str_replace( '###ADMIN_EMAIL###', get_option( 'admin_email' ), $pass_change_email['message'] );
     2303                $pass_change_email['message'] = str_replace( '###EMAIL###', $user['user_email'], $pass_change_email['message'] );
     2304                $pass_change_email['message'] = str_replace( '###SITENAME###', $blog_name, $pass_change_email['message'] );
     2305                $pass_change_email['message'] = str_replace( '###SITEURL###', home_url(), $pass_change_email['message'] );
     2306
     2307                wp_mail( $pass_change_email['to'], sprintf( $pass_change_email['subject'], $blog_name ), $pass_change_email['message'], $pass_change_email['headers'] );
     2308        }
     2309
     2310        if ( ! empty( $send_email_change_email ) ) {
     2311                /* translators: Do not translate USERNAME, ADMIN_EMAIL, NEW_EMAIL, EMAIL, SITENAME, SITEURL: those are placeholders. */
     2312                $email_change_text = __(
     2313                        'Hi ###USERNAME###,
    23122314
    23132315This notice confirms that your email address on ###SITENAME### was changed to ###NEW_EMAIL###.
    … …  
    23212323All at ###SITENAME###
    23222324###SITEURL###'
    2323                         );
    2324 
    2325                         $email_change_email = array(
    2326                                 'to'      => $user['user_email'],
    2327                                 /* translators: Email change notification email subject. %s: Site title. */
    2328                                 'subject' => __( '[%s] Email Changed' ),
    2329                                 'message' => $email_change_text,
    2330                                 'headers' => '',
    2331                         );
    2332 
    2333                         /**
    2334                          * Filters the contents of the email sent when the user's email is changed.
    2335                          *
    2336                          * @since 4.3.0
    2337                          *
    2338                          * @param array $email_change_email {
    2339                          *     Used to build wp_mail().
    2340                          *
    2341                          *     @type string $to      The intended recipients.
    2342                          *     @type string $subject The subject of the email.
    2343                          *     @type string $message The content of the email.
    2344                          *         The following strings have a special meaning and will get replaced dynamically:
    2345                          *         - ###USERNAME###    The current user's username.
    2346                          *         - ###ADMIN_EMAIL### The admin email in case this was unexpected.
    2347                          *         - ###NEW_EMAIL###   The new email address.
    2348                          *         - ###EMAIL###       The old email address.
    2349                          *         - ###SITENAME###    The name of the site.
    2350                          *         - ###SITEURL###     The URL to the site.
    2351                          *     @type string $headers Headers.
    2352                          * }
    2353                          * @param array $user     The original user array.
    2354                          * @param array $userdata The updated user array.
    2355                          */
    2356                         $email_change_email = apply_filters( 'email_change_email', $email_change_email, $user, $userdata );
    2357 
    2358                         $email_change_email['message'] = str_replace( '###USERNAME###', $user['user_login'], $email_change_email['message'] );
    2359                         $email_change_email['message'] = str_replace( '###ADMIN_EMAIL###', get_option( 'admin_email' ), $email_change_email['message'] );
    2360                         $email_change_email['message'] = str_replace( '###NEW_EMAIL###', $userdata['user_email'], $email_change_email['message'] );
    2361                         $email_change_email['message'] = str_replace( '###EMAIL###', $user['user_email'], $email_change_email['message'] );
    2362                         $email_change_email['message'] = str_replace( '###SITENAME###', $blog_name, $email_change_email['message'] );
    2363                         $email_change_email['message'] = str_replace( '###SITEURL###', home_url(), $email_change_email['message'] );
    2364 
    2365                         wp_mail( $email_change_email['to'], sprintf( $email_change_email['subject'], $blog_name ), $email_change_email['message'], $email_change_email['headers'] );
    2366                 }
    2367 
    2368                 if ( $switched_locale ) {
    2369                         restore_previous_locale();
    2370                 }
     2325                );
     2326
     2327                $email_change_email = array(
     2328                        'to'      => $user['user_email'],
     2329                        /* translators: Email change notification email subject. %s: Site title. */
     2330                        'subject' => __( '[%s] Email Changed' ),
     2331                        'message' => $email_change_text,
     2332                        'headers' => '',
     2333                );
     2334
     2335                /**
     2336                 * Filters the contents of the email sent when the user's email is changed.
     2337                 *
     2338                 * @since 4.3.0
     2339                 *
     2340                 * @param array $email_change_email {
     2341                 *     Used to build wp_mail().
     2342                 *
     2343                 *     @type string $to      The intended recipients.
     2344                 *     @type string $subject The subject of the email.
     2345                 *     @type string $message The content of the email.
     2346                 *         The following strings have a special meaning and will get replaced dynamically:
     2347                 *         - ###USERNAME###    The current user's username.
     2348                 *         - ###ADMIN_EMAIL### The admin email in case this was unexpected.
     2349                 *         - ###NEW_EMAIL###   The new email address.
     2350                 *         - ###EMAIL###       The old email address.
     2351                 *         - ###SITENAME###    The name of the site.
     2352                 *         - ###SITEURL###     The URL to the site.
     2353                 *     @type string $headers Headers.
     2354                 * }
     2355                 * @param array $user     The original user array.
     2356                 * @param array $userdata The updated user array.
     2357                 */
     2358                $email_change_email = apply_filters( 'email_change_email', $email_change_email, $user, $userdata );
     2359
     2360                $email_change_email['message'] = str_replace( '###USERNAME###', $user['user_login'], $email_change_email['message'] );
     2361                $email_change_email['message'] = str_replace( '###ADMIN_EMAIL###', get_option( 'admin_email' ), $email_change_email['message'] );
     2362                $email_change_email['message'] = str_replace( '###NEW_EMAIL###', $userdata['user_email'], $email_change_email['message'] );
     2363                $email_change_email['message'] = str_replace( '###EMAIL###', $user['user_email'], $email_change_email['message'] );
     2364                $email_change_email['message'] = str_replace( '###SITENAME###', $blog_name, $email_change_email['message'] );
     2365                $email_change_email['message'] = str_replace( '###SITEURL###', home_url(), $email_change_email['message'] );
     2366
     2367                wp_mail( $email_change_email['to'], sprintf( $email_change_email['subject'], $blog_name ), $email_change_email['message'], $email_change_email['headers'] );
     2368        }
     2369
     2370        if ( $switched_locale ) {
     2371                restore_previous_locale();
    23712372        }
    23722373
Note: See TracChangeset for help on using the changeset viewer.