Custom Login

Custom Login allows you to easily customize your admin login page, works great for client sites!

Custom Login 2.0 was 140% faster than version 1.0, and version 3.0 is now even better! Minimum WordPress version is 4.8

For more information visit the official Custom Login page.

Austin and the Frosty Media team will always try our best to support the Custom Login plugin on the forum, but please note that we can not guarantee a response in a timely manner. If you have an issue we would appriciate you using GitHub or purchasing priority support on our site.

Any extensions purchased on Frosty Media (not hosted on will not be supported on the forum. You can always browse our small but growing documentation for further assistance. You need a valid license key to make support submissions on our site. We thank you in advance.

Bug Reports
Bug reports for Custom Login are welcomed on GitHub.



There are currently 7 premium extensions available, with more coming (suggestions welcome – and will be offered for free to said user).

Extensions available now

Extensions in development/extension ideas

  • Email Logins for usernames.
  • 2-step Authentication.
  • “Super User” only access for client sites.
  • Added in core as of version 3.0 Remove default WordPress login CSS.
  • Submit button styles!
  • Added as of version 3.2 Custom Login pre made settings templates AKA Style Packs.

More info

Activate the plugin and customize your WordPress login screen. It’s as easy as modifying a few settings, there is no need to understand CSS at all. Custom Login even has a HTML, CSS & jQuery textarea for more advanced customizations.

  1. Works great for client site installs.
  2. Read more about Custom Login 3.1
  3. Read more about Custom Login 2.0

For those looking to showoff your login screen, check out the Flickr group! Share you designs with the community!


Hooks and Filters

Coming Soon.

Follow the steps below to install the plugin.

  1. Upload the custom-login directory to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘plugins’ menu in WordPress.
  3. Go to Settings/custom-login to edit your settings.
  4. Design away.
  5. Activate the settings by checking “Enable” in the “General Settings” tab.
What are extensions?

They are additional plugins that add/extend functionality to the Custom Login plugin. You can find all Custom Login extensions on Frosty.Media.

My new settings aren’t showing up

This plugin caches all settings in a transient, try clicking the new ‘Update stylesheet’ button to delete and refresh the cache. This will apply to versions < 3.0.

Is there a PRO version?

Well, yes and no. Since version 3.0 of Custom Login the PRO version is a completely different plugin. Instead of settings to manage your login design there is a new post type where you can create unlimited “designs” and activate each one as needed. Since version 3.0 all Custom Login extensions no longer work with Custom Login Pro, but will be merged into it in the future.

Why create this plugin?

I created this plugin to allow for custom login of any WordPress login screen. See working example on: Frosty.Media/login.

Where can I upload and share my cool login screen?

Check out the Flickr group! Upload and add it to our pool!

I think I want to uninstall

Just deactivate it. Sad panda is sad.

Version 3.2.15 (2022/03/11)

  • Fix settings API Settings: Uncaught Error: Call to undefined method stdClass::get_permalink() (#49)

Version 3.2.14 (2022/03/10)

  • Fix settings widget feed for available extensions. Changes from RSS to REST.
  • Add auto deploy to GitHub action.

Version 3.2.13 (2022/01/06)

  • Change custom CSS settings sanitizer in admin to allow for proper HTML CSS attributes like >.

Version 3.2.12 (2021/11/07)

  • Change dashboard from RSS feed to REST API endpoint.
  • Fix condition for dashboard widget to use is_blog_admin.

Version 3.2.11 (2020/12/07)

  • PHP 8 compatibility fixes.
  • Tested on WordPress 5.6

Version 3.2.10 (2020/08/14)

  • Tested up to WordPress 5.5
  • Fix toggle on/off on settings page, incorrect check in AJAX for new installs.
  • Enable on activation hook fixed.
  • Remove ace.js theme call to non existing theme.

Version 3.2.9 (2019/05/07)

  • Tested up to WordPress 5.2.
  • Update deprecated login text filter in WordPress 5.2.
  • Update animate.css to version 3.7.0.
  • Update chosen.js to 1.8.7.
  • Update jQuery Sticky to 1.0.4.
  • Fix spelling error in admin JS on typeof check for ACE JS.

Version 3.2.8 (12/11/17)

  • Update notifications URL to current correct location for admin settings page.

Version 3.2.7 (11/13/17)

  • Fix duplicate CSS output in head bug.
  • Fix empty link URL and title on wp login page when on multisite.

Version 3.2.6 (11/10/17)

  • Check compatibility with WordPress 4.9.
  • Update Settings API to fix Undefined index: active message.

Version 3.2.5 (04/13/16)

  • WordPress 4.5 compatible update (moves Custom Login css after WordPress’ login style sheet).
  • Fix issue where toggling the ‘active’ checkbox in the header doesn’t activate or de-activate the plugin settings (updates via AJAX now).

Version 3.2.4 (09/16/15)

  • Fix PHP Fatal error.
    ** PHP Fatal error: Call to a member function get_permalink() on a non-object in /includes/admin/dashboard.php:114

Version 3.2.2 (05/04/15)

  • May the fourth be with you.
  • Cleaned up dashboard JS errors.

Version 3.2.2 (04/29/15)

  • Update version number.
  • Fix upgrade notice showing when not needed.
  • Add class ‘notice’ and ‘is-dismissible’ to notice.
  • Cleanup admin dashboard empty ob_get_clean() notice.

Version 3.2.1 (04/20/15)

  • Fix: XSS security flaw.
  • Fix: Settings page not showing. (Fixes Issue: #6 /ht @DrewAPicture.

Version 3.2 (02/09/15)

  • Message: Celebrate 500,000 downloads. Visit the settings page or this post to get any extension for free! *Restrictions may apply.
  • Notice: Introduce Custom Login Style Pack #1
  • Fix: Possible headers_sent() error in some installations forum.
  • Fix: Setting update script might uncheck (turn off) the activate switch.
  • Fix: CSS #login form box shadow not accepting opacity settings.
  • Update: Default ‘activate’ setting to ‘on’.
  • Update: “Save Changes” submit button to “Save {Tab Title}”.
  • Update: Allow Custom (CSS/HTML/JS) textareas to expand up to 30 lines.
  • Update: admin.css
  • Update: admin.js
  • Add: animate.css Licensed under MIT.
  • Add: Global ‘active’ toggle switch.

Version 3.1 (01/20/15)

  • Update: Disable auth cookie expiration function.
  • Update: All prefixed ‘cl_’ to ‘custom_login_’.
  • Update: Spelling error ‘sanitize’.
  • Update: login.css uses core stylesheet to avoid possible conflicts with checkboxes and browser support.
  • Tweak: Speed improvements.
  • Add: CL_Common::is_settings_page().
  • Add: Dashboard widget (off be default).

Version 3.0.8 (01/14/15)

  • Add: Auth timout setting when remember me is checked and not.
  • Add: filter to wp_remote_get timeout. Use: cl_wp_remote_get_timeout to return (int) value, defaults to 15.
  • Update: auth_cookie_expiration function.
  • Update: Removed post_password_expires setting in favor of auth_timeout & auth_timeout_remember.
  • Fix: Possible white screen issue, for users who updated to 3.0.7 before a file was uploaded. (version bump).

Version 3.0.7 (01/13/15)

  • Update: ace.js to build 20.12.14.
  • Update: admin.css.
  • Update: Extenstions HTML and settings page location.
  • Update: Sanatize the auth_cookie_expiration setting with a positive integer.
  • Tweak: Remove false positive files from malware scanners; ace editor php.js forum.
  • Tweak: Make sure auth_cookie_expiration is greater than 0.

Version 3.0.6 (01/13/15)

  • Bug: Misspelled variable returned on auth_cookie_expiration caused instant user logout.

Version 3.0.5 (01/13/15)

  • Add: Update uninstall.php with all options to delete.
  • Add: Disable lost password reset function option.
  • Update: Settings prefix with global definition.
  • Update: Add missing auth expiration function for setting.
  • Fix: Hide tracking notice globaly if admin notices are turned off.
  • Tweak: Update the hide_wp_logo description since Custom Login removes the WP logo by default.
  • Tweak: Better output of update notification on settings page.
  • Tweak: Update input fields that are integers to a ‘number’ input type.
  • Tweak: Update readme dates to 2015. 🙂

Version 3.0.4 (01/12/15)

  • Tweak: Add manual update link on settings page if new settings are empty and old settings exist.
  • Fix: Make sure tracking is set to “on” before sending.

Version 3.0.3 (01/12/15)

  • Fix: Add missing “Remove WP Logo” setting.
  • Fix: When “activate” isn’t checked disable settings output.
  • Fix: foreach error. When get_editable_roles fails to return an array. forum
  • Fix: On Logo “insert” getting called on background image insert.
  • Tweak: Update chosen JS to version 1.3.0.

Version 3.0.2 (01/12/15)

  • Fix: Logo background size width & height settings not transfering over in upgrade process.
  • Fix: Checking “Remove lost password text” removes the text instead of the other way around. forum

Version 3.0.1 (01/11/15)

  • New: Add force width option to force width on h1 logo wrapper.
  • Bug: Change sanitization of all integer fields to ‘int’ vs ‘absint’ to allow empty or no value.
  • Bug: Remove is_int function on Logo width and height style output.
  • Tweak: On Logo upload and “insert” update the width and height input settings fields for logo with the image size.
  • Tweak: Change CSS rule(s) from #login h1 a to .login h1 a.

Version 3.0.0 (12/01/14)

REQUIRES WordPress 3.9 or later

  • New: Complete rewrite.
  • New: Settings page UI update, now matches your WordPress admin color scheme.
  • New: Extensions installer moved to sparate settings page (hidden).
  • New: Removed version 2.x changelog.
  1. <p>Custom Login v3 Design Settings part 1.</p>

    Custom Login v3 Design Settings part 1.

  2. <p>Custom Login v3 Design Settings part 2.</p>

    Custom Login v3 Design Settings part 2.

  3. <p>Custom Login v3 General Settings.</p>

    Custom Login v3 General Settings.

  4. <p>Custom Login Extensions Installer (an active license key is required).</p>

    Custom Login Extensions Installer (an active license key is required).