Make WordPress Core


Ignore:
Timestamp:
09/21/2023 06:22:10 PM (3 years ago)
Author:
joedolson
Message:

Login and Registration: Improve HTML for errors and notices.

Improve markup on Login and Registration errors. Use list markup for multiple issues, paragraph when only one to reduce semantic burden in the most common case. Normalize classes and markup for wrapper using wp_admin_notice() and wp_get_admin_notice() functions. Move definition of those functions from wp-admin\includes\misc.php to wp-includes\functions.php. Move tests to functions group.

Props extendwings, sabernhardt, afercia, lukecavanagh, rianrietveld, oglekler, sergeybiryukov, costdev, joedolson.
Fixes #30685.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-login.php

    r56628 r56654  
    229229
    230230        if ( $wp_error->has_errors() ) {
    231                 $errors   = '';
    232                 $messages = '';
     231                $error_list = array();
     232                $messages   = '';
    233233
    234234                foreach ( $wp_error->get_error_codes() as $code ) {
     
    236236                        foreach ( $wp_error->get_error_messages( $code ) as $error_message ) {
    237237                                if ( 'message' === $severity ) {
    238                                         $messages .= '  ' . $error_message . "<br />\n";
     238                                        $messages .= '<p>' . $error_message . '</p>';
    239239                                } else {
    240                                         $errors .= '    ' . $error_message . "<br />\n";
     240                                        $error_list[] = $error_message;
    241241                                }
    242242                        }
    243243                }
    244244
    245                 if ( ! empty( $errors ) ) {
     245                if ( ! empty( $error_list ) ) {
     246                        $errors = '';
     247
     248                        if ( count( $error_list ) > 1 ) {
     249                                $errors .= '<ul class="login-error-list">';
     250
     251                                foreach ( $error_list as $item ) {
     252                                        $errors .= '<li>' . $item . '</li>';
     253                                }
     254
     255                                $errors .= '</ul>';
     256                        } else {
     257                                $errors .= '<p>' . $error_message . '</p>';
     258                        }
     259
    246260                        /**
    247261                         * Filters the error messages displayed above the login form.
     
    251265                         * @param string $errors Login error message.
    252266                         */
    253                         echo '<div id="login_error">' . apply_filters( 'login_errors', $errors ) . "</div>\n";
     267                        $errors = apply_filters( 'login_errors', $errors );
     268                        wp_admin_notice(
     269                                $errors,
     270                                array(
     271                                        'type'           => 'error',
     272                                        'id'             => 'login_error',
     273                                        'paragraph_wrap' => false,
     274                                )
     275                        );
    254276                }
    255277
     
    262284                         * @param string $messages Login messages.
    263285                         */
    264                         echo '<p class="message" id="login-message">' . apply_filters( 'login_messages', $messages ) . "</p>\n";
     286                        $messages = apply_filters( 'login_messages', $messages );
     287                        wp_admin_notice(
     288                                $messages,
     289                                array(
     290                                        'type'               => 'info',
     291                                        'id'                 => 'login-message',
     292                                        'additional_classes' => array( 'message' ),
     293                                        'paragraph_wrap'     => false,
     294                                )
     295                        );
    265296                }
    266297        }
     
    400431
    401432        ?>
    402         <div class="clear"></div>
    403433        </body>
    404434        </html>
     
    830860                do_action( 'lost_password', $errors );
    831861
    832                 login_header( __( 'Lost Password' ), '<p class="message">' . __( 'Please enter your username or email address. You will receive an email message with instructions on how to reset your password.' ) . '</p>', $errors );
     862                login_header(
     863                        __( 'Lost Password' ),
     864                        wp_get_admin_notice(
     865                                __( 'Please enter your username or email address. You will receive an email message with instructions on how to reset your password.' ),
     866                                array(
     867                                        'type'               => 'info',
     868                                        'additional_classes' => array( 'message' ),
     869                                )
     870                        ),
     871                        $errors
     872                );
    833873
    834874                $user_login = '';
     
    947987                        reset_password( $user, $_POST['pass1'] );
    948988                        setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
    949                         login_header( __( 'Password Reset' ), '<p class="message reset-pass">' . __( 'Your password has been reset.' ) . ' <a href="' . esc_url( wp_login_url() ) . '">' . __( 'Log in' ) . '</a></p>' );
     989                        login_header(
     990                                __( 'Password Reset' ),
     991                                wp_get_admin_notice(
     992                                        __( 'Your password has been reset.' ) . ' <a href="' . esc_url( wp_login_url() ) . '">' . __( 'Log in' ) . '</a>',
     993                                        array(
     994                                                'type'               => 'info',
     995                                                'additional_classes' => array( 'message', 'reset-pass' ),
     996                                        )
     997                                )
     998                        );
    950999                        login_footer();
    9511000                        exit;
     
    9551004                wp_enqueue_script( 'user-profile' );
    9561005
    957                 login_header( __( 'Reset Password' ), '<p class="message reset-pass">' . __( 'Enter your new password below or generate one.' ) . '</p>', $errors );
     1006                login_header(
     1007                        __( 'Reset Password' ),
     1008                        wp_get_admin_notice(
     1009                                __( 'Enter your new password below or generate one.' ),
     1010                                array(
     1011                                        'type'               => 'info',
     1012                                        'additional_classes' => array( 'message', 'reset-pass' ),
     1013                                )
     1014                        ),
     1015                        $errors
     1016                );
    9581017
    9591018                ?>
     
    9861045
    9871046                        <p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
    988                         <br class="clear" />
    9891047
    9901048                        <?php
     
    10801138                $redirect_to = apply_filters( 'registration_redirect', $registration_redirect, $errors );
    10811139
    1082                 login_header( __( 'Registration Form' ), '<p class="message register">' . __( 'Register For This Site' ) . '</p>', $errors );
     1140                login_header(
     1141                        __( 'Registration Form' ),
     1142                        wp_get_admin_notice(
     1143                                __( 'Register For This Site' ),
     1144                                array(
     1145                                        'type'               => 'info',
     1146                                        'additional_classes' => array( 'message', 'register' ),
     1147                                )
     1148                        ),
     1149                        $errors
     1150                );
    10831151
    10841152                ?>
     
    11051173                                <?php _e( 'Registration confirmation will be emailed to you.' ); ?>
    11061174                        </p>
    1107                         <br class="clear" />
    11081175                        <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
    11091176                        <p class="submit">
Note: See TracChangeset for help on using the changeset viewer.