WordPress.org

Make WordPress Core

Ticket #21133: 21133.4.patch

File 21133.4.patch, 2.8 KB (added by SergeyBiryukov, 6 years ago)
  • wp-login.php

     
    8585        // Don't allow interim logins to navigate away from the page.
    8686        if ( $interim_login )
    8787                $login_header_url = '#';
    88 
    8988        ?>
    9089        </head>
    91         <body class="login<?php if ( wp_is_mobile() ) echo ' mobile'; ?>">
     90        <body <?php login_body_class(); ?>>
    9291        <div id="login">
    9392                <h1><a href="<?php echo esc_url( $login_header_url ); ?>" title="<?php echo esc_attr( $login_header_title ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
    9493        <?php
     
    343342        return $user_id;
    344343}
    345344
     345/**
     346 * Retrieve current action.
     347 *
     348 * @since 3.5.0
     349 * @access private
     350 *
     351 * @return string Requested action.
     352 */
     353function _get_login_action() {
     354        $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'login';
     355
     356        if ( isset( $_GET['key'] ) )
     357                $action = 'resetpass';
     358
     359        // validate action so as to default to the login screen
     360        if ( ! in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) && false === has_filter( 'login_form_' . $action ) )
     361                $action = 'login';
     362
     363        return $action;
     364}
     365
     366/**
     367 * Display the classes for the body element.
     368 *
     369 * @since 3.5.0
     370 *
     371 * @param string|array $class One or more classes to add to the class list.
     372 */
     373function login_body_class( $class = '' ) {
     374        echo 'class="' . join( ' ', get_login_body_class( $class ) ) . '"';
     375}
     376
     377/**
     378 * Retrieve the classes for the body element as an array.
     379 *
     380 * @since 3.5.0
     381 *
     382 * @param string|array $class One or more classes to add to the class list.
     383 * @return array Array of classes.
     384 */
     385function get_login_body_class( $class = '' ) {
     386        $classes = array( 'login' );
     387       
     388        $classes[] = _get_login_action();
     389       
     390        if ( is_rtl() )
     391                $classes[] = 'rtl';
     392       
     393        if ( wp_is_mobile() )
     394                $classes[] = 'mobile';
     395       
     396        if ( ! empty( $class ) ) {
     397                if ( ! is_array( $class ) )
     398                        $class = preg_split( '#\s+#', $class );
     399                $classes = array_merge( $classes, $class );
     400        }
     401       
     402        $classes = array_map( 'esc_attr', $classes );
     403       
     404        return array_unique( apply_filters( 'login_body_class', $classes, $class ) );
     405}
     406
    346407//
    347408// Main
    348409//
    349410
    350 $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
     411$action = _get_login_action();
    351412$errors = new WP_Error();
    352413
    353 if ( isset($_GET['key']) )
    354         $action = 'resetpass';
    355 
    356 // validate action so as to default to the login screen
    357 if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) && false === has_filter( 'login_form_' . $action ) )
    358         $action = 'login';
    359 
    360414nocache_headers();
    361415
    362416header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));