` element. * Default 'Log In'. * @param string $message Optional. Message to display in header. Default empty. * @param WP_Error $wp_error Optional. The error to pass. Default empty. */ function login_header( $title = 'Log In', $message = '', $wp_error = '' ) { global $error, $interim_login, $action; // Don't index any of these forms if (function_exists('wp_sensitive_page_meta')) { /** * wp_sensitive_page_meta() was introduced in 5.0.1 */ add_action('login_head', 'wp_sensitive_page_meta'); } else { add_action('login_head', 'wp_no_robots'); } add_action('login_head', 'wp_login_viewport_meta'); if (!is_wp_error($wp_error)) { $wp_error = new WP_Error(); } // Shake it! $shake_error_codes = array( 'empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password' ); /** * Filters the error codes array for shaking the login form. * * @param array $shake_error_codes Error codes that shake the login form. * * @since 3.0.0 * */ $shake_error_codes = apply_filters('shake_error_codes', $shake_error_codes); if ($shake_error_codes && $wp_error->get_error_code() && in_array($wp_error->get_error_code(), $shake_error_codes, true)) add_action('login_footer', 'wp_shake_js', 12); $login_title = get_bloginfo('name', 'display'); /* translators: Login screen title. 1: Login screen name, 2: Network or site name */ $login_title = sprintf(__('%1$s ‹ %2$s — WordPress'), $title, $login_title); /** * Filters the title tag content for login page. * * @param string $login_title The page title, with extra context added. * @param string $title The original page title. * * @since 4.9.0 * */ $login_title = apply_filters('login_title', $login_title, $title); ?> > <?php echo $login_title; ?> get_error_code()) { ?> site_name; } else { $login_header_url = __('https://wordpress.org/'); $login_header_title = __('Powered by WordPress'); } /** * Filters link URL of the header logo above login form. * * @param string $login_header_url Login header logo URL. * * @since 2.1.0 * */ $login_header_url = apply_filters('login_headerurl', $login_header_url); /** * Filters the title attribute of the header logo above login form. * * @param string $login_header_title Login header logo title attribute. * * @since 2.1.0 * */ $login_header_title = apply_filters('login_headertitle', $login_header_title); /* * To match the URL/title set above, Multisite sites have the blog name, * while single sites get the header title. */ if (is_multisite()) { $login_header_text = get_bloginfo('name', 'display'); } else { $login_header_text = $login_header_title; } /** * Filters the link text of the header logo above the login form. * * @param string $login_header_text The login header logo link text. * * @since 5.2.0 * */ $login_header_text = apply_filters('login_headertext', $login_header_text); $classes = array( 'login-action-' . $action, 'wp-core-ui' ); if (is_rtl()) $classes[] = 'rtl'; if ($interim_login) { $classes[] = 'interim-login'; ?>

add('error', $error); unset($error); } if ($wp_error->get_error_code()) { $errors = ''; $messages = ''; foreach ($wp_error->get_error_codes() as $code) { $severity = $wp_error->get_error_data($code); foreach ($wp_error->get_error_messages($code) as $error_message) { if ('message' == $severity) $messages .= ' ' . $error_message . "
\n"; else $errors .= ' ' . $error_message . "
\n"; } } if (!empty($errors)) { /** * Filters the error messages displayed above the login form. * * @param string $errors Login error message. * * @since 2.1.0 * */ echo '
' . apply_filters('login_errors', $errors) . "
\n"; } if (!empty($messages)) { /** * Filters instructional messages displayed above the login form. * * @param string $messages Login messages. * * @since 2.5.0 * */ echo '

' . apply_filters('login_messages', $messages) . "

\n"; } } } // End of login_header() /** * Outputs the footer for the login page. * * @param string $input_id Which input to auto-focus */ function login_footer($input_id = '') { global $interim_login; // Don't allow interim logins to navigate away from the page. if (!$interim_login): ?>

', '
'); } ?>