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;}
add_action('login_head', 'my_custom_login_logo');

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


do_action( 'login_head' );



User Contributed Notes

  1. Skip to note 2 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( !important; margin: 0 auto; }
    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' );

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