Choose or create a real physical upload subfolder (not a virtual one) from the classic Add Media screen.
Information
Author:
ROBOTSTXTDownload
Price:
€0.00Requirements
Version:
1.1.0WordPress:
5.9–
7.1PHP >=
8.0Changelog
1.1.0
Release date: 2026-09-17
Highlights
- Live preview on the settings page.
Added
- Live preview of the login screen with unsaved changes: an iframe of the real wp-login.php plus an AJAX endpoint that returns the draft CSS built by the same
generate_css()used on the login screen (no drift possible). The button text, custom message, footer, and visibility toggles are applied to the frame dynamically; the language dropdown gets a preview-only CSS stand-in because core removes it server-side. Capability- and nonce-protected like the settings form.
Security
- The preview endpoint enforces the same capability and nonce as the settings form; draft values pass through the full sanitization pipeline and are never stored.
Compatibility
- WordPress: 5.9 – 7.1
- PHP: 8.0 – 8.5
Tests
- PHP Coding Standards: 3.13.6
- WordPress Coding Standards: 3.4.1
- Plugin Check (PCP): pending
1.0.0
Release date: 2026-09-17
Highlights
- First stable release.
Added
- Spanish (es_ES) and Catalan (ca) translations (all 76 runtime strings, compiled
.mofiles shipped). - Logo size option: width and height in pixels (empty keeps the WordPress 84×84 default; the image scales to fit).
- “Hide the logo entirely” toggle: removes the logo area including the default WordPress logo.
- Text-mode logo: when no logo image is set but the logo title is, the title text replaces the default WordPress logo (the image still wins when both are set; hiding wins over everything).
- “Do not link the logo” toggle: the logo is not clickable (the link URL field is ignored; the anchor points at the login page itself as a no-op for keyboard users).
- Button color option: a dedicated hex color for the login button, falling back to the accent color when empty (the accent now colors the links only).
- Button text color option: a dedicated hex color for the login button label, keeping white (the WordPress default) when empty.
- Custom button text is skipped when the request carries
wp_lang(the login language selector), so the chosen locale’s own button text applies. - Button border options: width in pixels (empty = the WordPress default) and a dedicated border color (empty = follows the button color). The radius row now shows radius and border width together.
- Visibility toggle: hide the “Remember Me” checkbox on the login form.
- Background image for the login screen: media-library picker with a “stretch to cover” option (unchecked tiles the image); combines with the background color.
- Default redirect after login: destination used when none was specifically requested (requested destinations are always honored).
- Custom footer text shown at the bottom of the login screen (
wp_kses_post, 2000 characters). - Password-reset blocking and custom button text are opt-in only and empty by default; the login screen is untouched until something is configured.
Security
- Pre-deploy audit fixes: the lost-password endpoint block now reads
$_REQUEST(mirroring core), so body-only POST requests cannot bypass it; the logo URL is resolved once at save time in the saving context (works network-wide on Multisite) and percent-encoded for the CSSurl()context; server-side length caps for every settings field (200/300/2000 characters, radius clamped to 200);X-Content-Type-Options: nosniffon the settings export; defense-in-depthesc_html()on the custom tab title and logo title.
Fixed
- Duplicate “Settings saved.” notice after saving in the network admin: the redirect now uses a dedicated
savedflag instead ofupdated, which the network settings.php parent page reacts to with its own notice.
Compatibility
- WordPress: 5.9 – 7.1
- PHP: 8.0 – 8.5
Tests
- PHP Coding Standards: 3.13.6
- WordPress Coding Standards: 3.4.1
- Plugin Check (PCP): pending
0.5.0
Release date: 2026-09-17
Highlights
- Settings import and export.
Added
- “Download settings file” action: serves the canonical settings as a JSON download (nonce and capability protected).
- “Import settings” form: uploads a previously exported JSON file, validates it (JSON, size limit of 100 KB), re-sanitizes every value, and replaces the stored settings. Success and error notices after the redirect.
Security
- Both handlers enforce the same capability and nonce as the settings form; imported data passes through the same sanitization pipeline as the form input, so unknown or malicious fields are dropped.
Compatibility
- WordPress: 6.9 – 7.1
- PHP: 8.2 – 8.5
Tests
- PHP Coding Standards: pending
- WordPress Coding Standards: 3.4.1
- Plugin Check (PCP): pending
0.4.0
Release date: 2026-09-17
Highlights
- Optional /login/ shortcut.
Added
- “Redirect /login/ to the login screen” toggle: on
template_redirect, a request for exactlylogin(with or without trailing slash) redirects towp-login.php. Resolved at request time instead of via rewrite rules, so the network-level toggle takes effect immediately on every site with no rewrite flushing. Singular queries are never hijacked: an existing page or post with the slug “login” keeps serving normally.
Compatibility
- WordPress: 6.9 – 7.1
- PHP: 8.2 – 8.5
Tests
- PHP Coding Standards: pending
- WordPress Coding Standards: 3.4.1
- Plugin Check (PCP): pending
0.3.0
Release date: 2026-09-17
Highlights
- Optional lost password endpoint block.
Added
- “Block the lost password endpoint” toggle with a warning in the settings page: when enabled,
wp-login.php?action=lostpasswordand itsretrievepasswordalias are redirected to the login form vialogin_init, removing the self-service password reset (reset links inside already-sent emails keep working;action=rp/resetpassare never blocked).
Security
- The endpoint block is enforced server-side on
login_init, before the lost-password form renders; hiding the link alone never blocks the endpoint.
Compatibility
- WordPress: 6.9 – 7.1
- PHP: 8.2 – 8.5
Tests
- PHP Coding Standards: pending
- WordPress Coding Standards: 3.4.1
- Plugin Check (PCP): pending
0.2.0
Release date: 2026-09-17
Highlights
- Visibility toggles for the login screen.
Added
- “Hide the Lost your password? link” toggle: hides only that link (the rest of the login nav, e.g. the register link, stays visible).
- “Hide the Back to site link” toggle.
- “Hide the language selector” toggle via the
login_display_language_dropdownfilter. - “Disable the shake animation” toggle: empties the
shake_error_codesfilter, so core never hookswp_shake_js(the hook moved fromlogin_headtologin_footerin current WordPress versions).
Changed
- The color fields now use the WordPress core color picker, with wider inputs and a Default button that clears back to the WordPress default.
Compatibility
- WordPress: 6.9 – 7.1
- PHP: 8.2 – 8.5
Tests
- PHP Coding Standards: pending
- WordPress Coding Standards: 3.4.1
- Plugin Check (PCP): pending
0.1.0
Release date: 2026-09-17
Highlights
- Initial development release: core login customizer (Phase 0 + Phase 1).
Added
- Plugin scaffolding: main plugin file
robotstxt-logincustomizer.php, matching the plugin directory name, with full plugin headers andNetwork: true(network-activated default; settings live at network level). - Settings page (Settings > Login customizer in the network admin on Multisite, Settings > Login customizer on single site) with nonce and capability protection (
manage_network_options/manage_options), storing a single network optionrobotstxt_logincustomizer_settings. - Logo customization: image from the media library (picker script loaded only on the settings page), rendered as the
#login h1 abackground via inline CSS; link URL (defaults to the site home vialogin_headerurl); title text vialogin_headertext. - Browser tab title via
login_title. - Colors: background (
body.login), accent (links and#wp-submitbutton, including hover/focus), and text (#login), validated withsanitize_hex_color(). - Button customization: text via a
gettextfilter hooked onlogin_formmatching the English source stringLog In(works on any site language), and border radius. - Optional custom message above the login form via
login_message, sanitized withwp_kses_post(). - Inline CSS generated from the options on
login_enqueue_scripts— no physical CSS files, no cache issues. - Delete-data-on-uninstall switch (settings preserved by default).
- Uninstall routine that preserves plugin data by default and only removes it when the network owner explicitly opts in.
- Development tooling: PHPCS (WordPress-Core, WordPress-Docs, WordPress-Extra), PHPStan level 9, PHPCompatibility, PHPUnit with plugin header tests,
bin/preflight.sh,bin/deploy.sh. - Translation template
languages/robotstxt-logincustomizer.pot.
Compatibility
- WordPress: 6.9 – 7.1
- PHP: 8.2 – 8.5
Tests
- PHP Coding Standards: pending
- WordPress Coding Standards: 3.4.1
- Plugin Check (PCP): pending
