=== Custom Login Page Customizer ===
Contributors: silkalns
Tags: login customizer, custom login page, login page, login form, white label login
Requires at least: 6.0
Tested up to: 7.1
Stable tag: 2.3.1
Requires PHP: 8.0
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Customize your WordPress login page with live preview. Change logo, background, colors, and form styling without coding.

== Description ==

**Custom Login Page Customizer** transforms your default WordPress login page into a branded, professional experience that matches your website. Perfect for agencies, freelancers, and businesses who want to impress clients and users from their very first interaction.

= Why Customize Your Login Page? =

Your login page is often the first thing clients and team members see. A branded login page:

* **Builds trust** – Professional appearance increases user confidence
* **Reinforces your brand** – Consistent branding across every touchpoint
* **Impresses clients** – White-label your WordPress sites for a polished look
* **Takes seconds** – No coding required, instant live preview

= Key Features =

**Live Customizer Preview** – See every change instantly before saving. No guesswork, no refreshing.

**Ready-Made Templates** – Choose from 9 professionally designed login page templates including modern gradients, glassmorphism, dark themes, and split-screen layouts.

**Complete Logo Control** – Upload your custom logo, adjust dimensions, or use text-based branding. Link your logo to any URL.

**Background Customization** – Add custom background images, solid colors, or gradients to create stunning login pages.

**Form Styling** – Customize every aspect of your login form including width, padding, borders, border radius, field colors, and button styles.

**Button & Link Styling** – Match your brand colors with customizable button backgrounds, hover states, shadows, and link colors.

**Custom CSS** – Advanced users can add custom CSS for pixel-perfect control.

**Multi-Column Layouts** – Create split-screen login pages with customizable column widths and alignments.

**Registration & Password Forms** – Customize the registration form and lost password form to match your login page styling.

= Perfect For =

* **Web Agencies** – White-label client sites with branded login pages
* **Freelancers** – Deliver polished, professional WordPress sites
* **Membership Sites** – Create welcoming login experiences for members
* **Corporate Intranets** – Reinforce company branding for employee portals
* **WooCommerce Stores** – Brand your customer account login pages
* **Multisite Networks** – Customize login pages across your network

= How It Works =

1. Install and activate the plugin
2. Go to **Appearance → Customize → Custom Login Page Customizer**
3. Customize your login page with live preview
4. Click Publish – done!

= Detailed Customization Options =

**Logo Section**
- Custom logo image upload
- Logo width and height control
- Logo URL customization
- Text-only or image-only options
- Logo text color and hover color

**Background Section**
- Custom background image
- Background color picker
- Form column background options

**Form Section**
- Form width and height
- Form background color and image
- Padding and border controls
- Border radius for rounded corners
- Field width, margin, and styling
- Label text customization
- Field background and text colors

**Button Section**
- Background color and hover color
- Border color and hover border color
- Button shadow and text shadow
- Submit button text customization

**Links Section**
- Link color and hover color
- Show/hide navigation links
- Show/hide "Remember Me" checkbox

= Documentation & Support =

Need help? Visit our [support forum](https://wordpress.org/support/plugin/colorlib-login-customizer/) for assistance.

= About Colorlib =

This plugin is developed by [Colorlib](https://colorlib.com/), creators of popular free WordPress themes downloaded by millions. We are committed to building high-quality, user-friendly WordPress plugins.

If you enjoy Custom Login Page Customizer, please leave a [5-star review](https://wordpress.org/support/plugin/colorlib-login-customizer/reviews/?filter=5). Your feedback helps us improve!

== Installation ==

1. Download the plugin (.zip file) on your hard drive.
2. Unzip the zip file contents.
3. Upload the `colorlib-login-customizer` folder to the `/wp-content/plugins/` directory.
4. Activate the plugin through the 'Plugins' menu in WordPress.
5. Go to **Appearance → Customize → Custom Login Page Customizer** to start customizing.

== Frequently Asked Questions ==

= How do I access the login page customizer? =

After activating the plugin, go to **Appearance → Customize** in your WordPress admin. You'll see a new section called "Custom Login Page Customizer" where you can customize your login page with live preview.

= Will this plugin work with my theme? =

Yes! Custom Login Page Customizer works independently of your theme. It only modifies the WordPress login page (wp-login.php), so it's compatible with any WordPress theme.

= Can I add my own logo to the login page? =

Absolutely. Go to the Logo section in the customizer to upload your custom logo. You can also adjust the logo width, height, and link URL. You can choose to display just the image, just text, or both.

= How do I change the login page background? =

In the customizer, navigate to the Background section. You can upload a custom background image or set a solid background color. There are also options for the form column background if you're using a multi-column layout.

= Does this work with custom login URLs from security plugins? =

Yes, Custom Login Page Customizer is compatible with security plugins that change the login URL, including All In One WP Security, WPS Hide Login, and similar plugins. Your customizations will appear on your custom login URL.

= Can I customize the registration and lost password pages too? =

Yes! The plugin includes options to customize the registration form and lost password form. Your styling will be applied consistently across all login-related pages.

= Is the plugin compatible with WordPress Multisite? =

Yes, Custom Login Page Customizer works with WordPress Multisite. You can customize the login page for your entire network or individual sites depending on your configuration.

= Will my customizations be lost if I update the plugin? =

No. All your customizations are saved in the WordPress database, separate from the plugin files. Your settings will be preserved through plugin updates.

= Can I add custom CSS to the login page? =

Yes, there's a Custom CSS section where you can add your own CSS code for advanced styling. This is perfect for fine-tuning specific elements or adding custom effects.

= How do I reset the login page to default? =

You can reset individual settings by clearing the values in the customizer. To completely reset all settings, you can deactivate and delete the plugin, then reinstall it.

= Does this plugin slow down my website? =

No. Custom Login Page Customizer only loads its styles and scripts on the WordPress login page. It has zero impact on your website's front-end performance.

= Is the plugin translation ready? =

Yes, Custom Login Page Customizer is fully translation ready and includes a POT file for translators. It's already translated into several languages.

= Can I use this plugin to white-label WordPress for clients? =

Yes! This plugin is perfect for agencies and freelancers who want to white-label WordPress login pages for clients. Remove the WordPress branding and add your client's logo and brand colors.

= What PHP version is required? =

Custom Login Page Customizer requires PHP 8.0 or higher. This ensures optimal performance and security. If you're running an older PHP version, please contact your hosting provider to upgrade.

= Where can I get support if I have issues? =

For support, please visit the [WordPress.org support forum](https://wordpress.org/support/plugin/colorlib-login-customizer/). We actively monitor and respond to support requests.

== Screenshots ==

1. Login page with custom background and logo
2. Customizer panel with live preview
3. Form styling options
4. Template selection

== Upgrade Notice ==

= 2.3.1 =
Fixes the login page's form-column colour, login labels leaking onto other plugins' fields, a fatal error with corrupt column settings, and settings import. Adds keyboard and screen-reader improvements, a live background preview and lighter images.

= 2.3.0 =
Security and correctness release. Custom-CSS sanitization is hardened (dangerous directives could previously be smuggled through by nesting them), the review-notice AJAX handler now checks capabilities, and several login-page texts no longer render double-escaped. Also fixes the "Back to site text" setting, which had silently stopped working on WordPress 5.7 and later. Recommended for all users.

== Changelog ==

= 2.3.1 =
* Fix: Custom login labels no longer replace other plugins' texts. The plugin swapped any "Password", "Email", "Username", "Register" or "Log in" string on the login page, including those of two-factor, CAPTCHA and WooCommerce fields; it now only changes WordPress's own.
* Fix: "Form Column background color" now works in two-column layouts. A more specific rule painted the form column with the page background colour, so the setting was ignored whenever a page colour was set (Template 08's white form column showed up yellow).
* Fix: A corrupt or legacy column-width value no longer causes a fatal error on the login page.
* Fix: Sites migrated from 1.x with a two-column layout get the correct layout class again (the column count was compared as a string but stored as a number).
* Fix: The Customizer preview now uses exactly the same CSS rules as the login page, so what you see is what you get: widths with units such as 100% no longer break in the preview, and the "logo and text" mode updates live.
* Fix: Importing settings no longer empties text labels that contain a semicolon, no longer accepts arrays for regular settings, validates layout and logo choices and image URLs, and works on Windows servers (the upload path was being stripped of its backslashes).
* Fix: The template picker now remembers and highlights the selected template.
* Fix: Removed a PHP "Array to string conversion" warning logged on every Customizer load once column widths had been saved.
* Fix: Registration text settings are hidden when registration is disabled, including on sites where the option is stored empty.
* Fix: The review request no longer comes back every 30 days. Its install date was kept in a transient that expired and restarted the countdown; "No, not good enough" is now final, and the notice only appears on the Dashboard, Plugins screen and this plugin's page.
* Fix: Leaving the Login Customizer panel returns the preview to the page you were on, and the preview uses your site address rather than the WordPress install address (sites with WordPress in a subdirectory).
* Usability: "Start Customizing!" opens the Customizer directly on the Login Customizer panel.
* Usability: Background blur and brightness now update live instead of reloading the preview on every slider step.
* Usability: An empty button label keeps WordPress's default text instead of rendering a blank button, and the Customizer says so.
* Usability: The default logo title follows the site language instead of always showing the English "Powered by WordPress".
* Accessibility: Emptied field labels stay available to screen readers. Keyboard focus is visible on the login form again, the template picker can be used with a keyboard, and the layout buttons, column-width arrows and background link have accessible names.
* Performance: Template backgrounds and thumbnails are 45% smaller (1.6 MB to 0.9 MB); the Template 01 background a visitor downloads went from 964 KB to 452 KB.
* Performance: One gettext filter replaces up to twelve, the "logo and text" and column rules are only printed when used, and the review notice no longer costs two uncached database queries on every admin page.
* Compatibility: Tested up to WordPress 7.1. Translations are loaded by WordPress automatically; the redundant load_plugin_textdomain() call was removed.
* Housekeeping: The autoloader only handles this plugin's classes and no longer leaves an `$autoloader` global behind; the preview template's variables are prefixed so they cannot overwrite core globals such as `$user_login`.

= 2.3.0 =
* Security: Hardened custom-CSS sanitization. Dangerous directives (@import, javascript:, expression(), behavior:, -moz-binding:, data: URIs) were previously stripped in a single pass, so a nested payload could reassemble itself into a working token. Filtering now repeats until the value stops changing.
* Security: The review-notice AJAX handler now performs a capability check, and its dismissal is stored per user instead of in a shared site-wide option.
* Security: Added direct-access guards to the files that were missing them.
* Security: CSS values are now escaped with a CSS-aware filter at print time instead of esc_attr(), which offered no protection inside a <style> element while corrupting quoted values such as font stacks.
* Security: Login page title is filtered through kses, closing a possible breakout via the unescaped <title> element.
* Fix: The "Hide privacy policy link" option no longer registers its filter on every request, so it can no longer affect the privacy policy link on the front end.
* Fix: Corrected double-escaped login text. Labels that WordPress already escapes (Log In, Register and Get New Password buttons, Remember Me) were escaped a second time, so an ampersand or apostrophe rendered as &amp; or &#039;.
* Fix: The "Back to site text" setting works again. WordPress 5.7 renamed the underlying string from "Back to %s" to "Go to %s"; both are now matched.
* Fix: Uninstall now removes the options and transients the plugin actually creates (including the admin menu location preference), no longer iterates every user on the site, and no longer flushes the entire object cache.
* New: Modern CSS support in colour and dimension fields — hsl(), 4- and 8-digit hex, space-separated rgb(0 0 0 / 50%), var(), color-mix(), calc(), clamp(), min(), max() and the dvh/svh/lvh/ch viewport units.
* Performance: The static base stylesheet is now a real, browser-cacheable file instead of being inlined on every login page view.
* Performance: Settings and the selector map are only loaded on the login page and in the Customizer preview, rather than on every front-end, admin and AJAX request.
* Performance: Removed ~1,250 lines of unused code (the jQuery minicolors library and four superseded Customizer controls) and their orphaned stylesheets.
* Fix: The "requires PHP 8.0" notice can now actually appear. The bootstrap file used PHP 7.1+ return types, and PHP parses a whole file before running it, so on an older PHP the plugin died with a parse error instead of explaining itself.
* i18n: The Customizer preview now reuses WordPress core's own translations for the login form labels it copies from wp-login.php, so the preview matches the real login page in every locale instead of depending on those core strings being re-translated into this plugin.
* Housekeeping: Removed two unused images (three-column.png, four-column.png).
* Fix: The two-column "form above" and "form below" layouts no longer force a horizontal scrollbar. Running the flex container in column direction while it still inherited flex-wrap made it start a second column once the two rows were taller than the viewport, doubling the page width.
* Fix: Removed a JavaScript error ("_customizePartialRefreshExports is not defined") from the Customizer preview. The preview template mirrors wp-login.php and never runs wp_head(), so WordPress never printed the selective-refresh data its own script expects.
* Fix: Restored the "Logo Title", "Login Page Title" and "Form Horizontal Alignment" settings to the defaults list — without an entry there they were silently discarded when importing a settings file.
* Dev: Added a PHPUnit suite covering the sanitization layer and the generated login stylesheet, and replaced Travis CI with GitHub Actions running PHP 8.0 through 8.5.

= 2.2.1 =
* Fix: The plugin settings page (with the new export/import, reset and menu-location tools) is now reachable instead of redirecting straight to the Customizer
* Fix: Custom text above the form and the custom footer links/text are no longer hidden behind the background when a custom background image or color is set

= 2.2.0 =
* New: "Footer & Links" section — add custom text above the login form and a custom footer below it, add up to 3 custom footer links (Imprint, Privacy, Terms, etc.), and toggles to hide the privacy policy link and the language switcher
* New: Export and import your settings as a JSON file, plus a one-click "Reset to defaults"
* New: Choose where the plugin's admin menu appears — top level, under Settings, or under Appearance
* New: Login button width control
* New: Background blur and brightness controls
* Enhancement: The login form height is now responsive and grows with its content, and supports "auto"
* Fix: CSS dimension values that already include a unit or keyword (such as 100% or auto) are no longer corrupted

= 2.1.2 =
* Fix: Custom logo is no longer lost when switching between templates in the Customizer (#172)
* Fix: Large logos now stay centered on desktop instead of shifting off-center when wider than the form (#70)
* Fix: The login page language switcher now appears centered below the form instead of beside it (#173)

= 2.1.1 =
* Security: Hardened output escaping across the login page, the admin review notice, and the settings page (esc_url, esc_attr, esc_html, esc_js, wp_kses_post)
* Fix: Corrected legacy logo-settings migration so older installs that used a text logo upgrade to the correct logo display mode
* Enhancement: Plugin styles and scripts are now versioned by the plugin version for reliable cache-busting after updates
* Compatibility: Verified and tested with PHP 8.5
* Compatibility: Tested up to WordPress 7.0
* Code: Brought the codebase to full WordPress Coding Standards (WPCS 3.3) compliance — phpcs reports zero errors and warnings
* Code: Added documentation blocks throughout and switched to timezone-safe date handling in the review notice
* Code: Added PHP 8.4 and 8.5 to the CI test matrix

= 2.1.0 =
* New: Added 5 new professionally designed login page templates:
  - Gradient Sunset – Modern vibrant purple-pink gradient with rounded form
  - Dark Professional – Sleek dark theme for corporate/professional sites
  - Glassmorphism – Trendy glass effect with blur and transparency
  - Geometric Bold – Two-column layout with bold amber geometric CSS shapes
  - Minimal Clean – Ultra-minimal design with maximum whitespace
* Fix: Password field width now matches username field width consistently
* Fix: Password visibility toggle (eye icon) properly centered in input field
* Enhancement: All new templates use CSS-only effects (no additional images required)
* Enhancement: Templates work consistently in both Customizer preview and live login page

= 2.0.0 =
* **BREAKING CHANGE**: Minimum PHP version is now 8.0 (was 5.6)
* **BREAKING CHANGE**: Minimum WordPress version is now 6.0 (was 4.6)
* Security: Fixed XSS vulnerabilities in login template output
* Security: Added proper escaping for all user-generated content
* Security: Added CSS sanitization to prevent injection attacks
* Security: Added capability checks for customizer preview
* Enhancement: Added strict type declarations throughout codebase
* Enhancement: Modernized PHP code with PHP 8.0+ features
* Enhancement: Added proper uninstall cleanup to remove all plugin data
* Enhancement: Added input validation and sanitization functions
* Enhancement: Updated CI/CD to test PHP 8.0, 8.1, 8.2, 8.3
* Fix: JavaScript typo 'show-image-ony' corrected to 'show-image-only'
* Fix: Removed unused constant COLORLIB_LOGIN_CUSTOMIZER_SITE
* Compatibility: Hide Astra theme style guide overlay on login page to prevent visual conflicts
* Enhancement: Added sanitize_callback to all Customizer settings for proper input validation
* Enhancement: Replaced custom toggle control with standard WordPress checkbox
* Enhancement: Replaced custom color picker with WordPress built-in WP_Customize_Color_Control
* Enhancement: Replaced custom range slider with native HTML5 range input
* Performance: Removed jQuery minicolors dependency (~39KB savings)
* Code: Added Composer for dependency management
* Code: Updated PHPCS ruleset for modern WordPress standards

= 1.3.4 - 05.06.2025 =
Fixed: Textdomain fix for wordpress 6.8+ ( [#179](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/179) )

= 1.3.3 - 03.02.2025 =
Fixed: Textdomain fix for wordpress 6.7+ ( [#179](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/179) )
Fixed: Deprecated: Hook login_headertitle ( [#178](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/178) )

= 1.3.2 - 27.03.2024 =
Fixed: Php 8 deprecations ( [#169](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/169) )
Fixed: "Remember me" label not aligned properly for users display( [#166](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/166) )
Fixed: Form alignment options switched( [#165](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/165) )
Fixed: The live preview doesn’t show "Register" link ( [#163](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/163) )
Fixed: Updated deprecated jquery & updated minicolors js library ( [#159](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/159) )
Fixed: Added plugin name in "Rate us" notice. ( [#149](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/149) )
Fixed: Show image only on tempalte no.4 does not display the logo image. ( [#135](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/135) )
Fixed: Background color that will not apply on half page form templates ( [#136](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/136) )
Fixed: Vertical scrollable login, reset and register forms ( [#131](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/131) )
Fixed: Bigger logos on mobile/small tablet devices stretching the login page. ( [#43](https://github.com/ColorlibHQ/colorlib-login-customizer/issues/43) )

= 1.3.1 - 08.02.2022 =
Fixed: Form placement ( https://wordpress.org/support/topic/the-login-area-doesnt-center-fix-not-working/ )

= 1.3.00 - 10.05.2021 =
Added : Background image link ( https://github.com/ColorlibHQ/colorlib-login-customizer/issues/115 )

= 1.2.99 - 08.04.2021=
Fixed: An issue where the link color hover pallete would not display properly (https://github.com/ColorlibHQ/colorlib-login-customizer/issues/139)
Fixed: An issue where the logo would be outside of the login box on a selected template ( https://github.com/ColorlibHQ/colorlib-login-customizer/issues/134)

= 1.2.98 =
* Compatibility with jQuery 3.0

= 1.2.97 =
* Hide logo settings if hide logo is toggled on
* Add option to use both image logo and text

= 1.2.96 =
* Compatibility fix with All In One WP Security plugin
* Customizer toggle bug fix
* Review dismiss fix

= 1.2.95 =
* Review request bug fix
* Review save bug fix

= 1.2.94 =
* Minor responsive fixes

= 1.2.93 =
* Removed news dashboard widget

= 1.2.92 =
* Update for possibility to add links inside certain form texts

= 1.2.91 =
* Added possibility to add links inside certain form texts
* Updated deprecated filter login_headertitle
* Added option to change login page title

= 1.2.9 =
* Update toggles design

= 1.2.8 =
* Responsive view fixes
* Updated plugin headers

= 1.2.7 =
* Added options to edit register form
* Added options to edit lost password form

= 1.2.6 =
* Customizer CSS editor full height
* Apply login form settings to registration form
* Removed duplicate control for logo text

= 1.2.5 =
* Remove uninstall feedback

= 1.2.4 =
* Fixed https://github.com/ColorlibHQ/colorlib-login-customizer/issues/30
* Fixed https://github.com/ColorlibHQ/colorlib-login-customizer/issues/41
* Added https://github.com/ColorlibHQ/colorlib-login-customizer/issues/27

= 1.2.3 =
* Fixed `Logo Url` setting
* Added `Logo Title` setting

= 1.2.2 =
* Added the possibility to change the `Remember Me` and `Log In` texts

= 1.2.1 =
* Minor tweaks & version bump

= 1.2.0 =
* Implemented everything from here: https://github.com/puikinsh/colorlib-login-customizer/milestone/1?closed=1

= 1.1 =
* Changed templates functionality
* Added new layout options
* Fixed live preview editing
* Fixed minor bugs

= 1.0 =
* Initial release
