` 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);
?>
>
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): ?>
', '
');
}
?>