do_action( ‘login_head’ )

Fires in the login page header after scripts are enqueued.

More Information

This filter can be used to add anything to the <head> section on the login page.

You can customise the login form using login_head fairly easily.

Add the following code to functions.php in your theme:

// custom login for theme
function childtheme_custom_login() {
echo '<link rel="stylesheet" type="text/css" href="' . get_bloginfo('stylesheet_directory') . '/customlogin.css" />';
}

add_action('login_head', 'childtheme_custom_login');

This has the effect of adding a reference to a stylesheet to your login form.

You will then need to add a stylesheet called customlogin.css to your theme directory.

For testing purposes, this should start you off:

html {
background-color: #f00;
}

This should produce a login background.

Here we replace the standard WordPress logo with our logo, taken from our theme (this uses get_stylesheet_directory_uri to work with child themes):

function my_custom_login_logo() {
echo '<style type="text/css">
h1 a { background-image:url('.get_stylesheet_directory_uri().'/images/login.png) !important;
height: 120px !important; width: 410px !important; margin-left: -40px;}
</style>';
}
add_action('login_head', 'my_custom_login_logo');

To set the URL of the login icon’s link, see login_headerurl

Source

do_action( 'login_head' );

Changelog

VersionDescription
2.1.0Introduced.

User Contributed Notes

  1. Skip to note 3 content

    More Information
    login_head handles authentication, registering, resetting passwords, forgot password,
    and other user handling.

    The login_head filter can be used to filter the logo image on the WordPress login page. By default this logo is of WordPress.

    Note: this is not the only possible use of this filter. It can be used to add anything to the section on the login page.

    Basic Examples
    Where “wpdocs_custom_function_name” is the function to be called when the content is being retrieved.

    add_filter( 'login_head', 'wpdocs_custom_function_name' );

    In the below example the default logo is changed to custom logo, using CSS.

    function wpdocs_my_custom_login_logo() {
        echo '<style type="text/css">
    	h1 a { background-image: url(http://example.com/your-logo.png) !important; margin: 0 auto; }
    	</style>';
    }
    add_filter( 'login_head', 'wpdocs_my_custom_login_logo' );

    To validate the login details before user logins, you can use the below function:
    (p.s. At first, you may have inserted some extra fields using ‘login_form’ action hook.)

    function wpdocs_ref_access() {
        global $error;
        if ( empty( $_POST['custom_field_name'] ) ) {
            $error  = 'Restricted area, please login to continue.';
        }
    }
    add_action( 'login_head', 'wpdocs_ref_access' );
  2. Skip to note 4 content

    If you are still using the filter login_head to enqueue style for change logo URL, I recommend to use login_enqueue_scripts instead.

    It’s OK to keep using this filter hook, but if you read the doc block on wp-login.php file above the filter login_enqueue_scripts. You will see that, it said Enqueues scripts and styles for the login page which is best fit for its purpose. That’s all.

You must log in before being able to contribute a note or feedback.