Title: Keyless Auth Ìtumọ̀ Yorùbá: &#8211; Login without Passwords
Author: Chris Martens
Published: <strong>Ọwẹ́wẹ̀  12, 2025</strong>
Last modified: Bélú 24, 2025

---

Ṣàwárí àwọn plugin

![](https://ps.w.org/keyless-auth/assets/banner-772x250.png?rev=3360492)

![](https://ps.w.org/keyless-auth/assets/icon-256x256.png?rev=3360492)

# Keyless Auth Ìtumọ̀ Yorùbá: – Login without Passwords

 Láti ọwọ́ [Chris Martens](https://profiles.wordpress.org/chrmrtns/)

[Ṣe ìgbàsílẹ̀](https://downloads.wordpress.org/plugin/keyless-auth.3.2.4.zip)

 * [Àwọn àlàyé](https://yor.wordpress.org/plugins/keyless-auth/#description)
 * [Àwọn àgbéyẹ̀wò](https://yor.wordpress.org/plugins/keyless-auth/#reviews)
 *  [Ìgbéwọlẹ̀](https://yor.wordpress.org/plugins/keyless-auth/#installation)
 * [Ìdàgbàsókè](https://yor.wordpress.org/plugins/keyless-auth/#developers)

 [Ìrànlọ́wọ́](https://wordpress.org/support/plugin/keyless-auth/)

## Àpèjúwe

Transform your WordPress login experience with passwordless authentication. Users
simply enter their email address and receive a secure magic link – click to login
instantly. ItÌtumọ̀ Yorùbá: ’s more secure than weak passwords and infinitely more
user-friendly.

#### Why Choose Keyless Auth?

 * **Enhanced Security**: No more weak, reused, or compromised passwords
 * **Better User Experience**: One click instead of remembering complex passwords
 * **Reduced Support**: Eliminate “forgot password” requests
 * **Modern Authentication**: Enterprise-grade security used by Slack, Medium, and
   others
 * **Security Hardening**: Built-in protection against brute force attacks and username
   enumeration

#### Quick Start

 1. Install and activate the plugin
 2. Create a new page and add the shortcode `[keyless-auth]`
 3. Configure email templates in **Keyless Auth  Templates**
 4. Done! Users can now login passwordlessly

#### Core Features

**Ready to Use**
 * **Magic Link Authentication** – Secure, one-time login links
via email * **Two-Factor Authentication (2FA)** – Complete TOTP support with Google
Authenticator * **Role-Based 2FA** – Require 2FA for specific user roles (admins,
editors, etc.) * **Custom 2FA Setup URLs** – Direct users to branded frontend 2FA
setup pages * **SMTP Integration** – Reliable email delivery through your mail server***
Email Templates** – Professional, customizable login emails * **Mail Logging** –
Track all sent emails with delivery status * **Custom Database Tables** – Scalable
architecture with dedicated audit logs

**Advanced Security**
 * **Token Security**: 10-minute expiration, single-use tokens***
Audit Logging**: IP addresses, device types, login attempts * **Emergency Mode**:
Grace period system with admin controls * **Secure Storage**: SMTP credentials in
wp-config.php option * **XML-RPC Disable**: Block brute force attacks via XML-RPC
interface * **Application Passwords Control**: Disable programmatic authentication
when not needed * **User Enumeration Prevention**: Block username discovery attacks

**Customization**
 * **WYSIWYG Email Editor**: Full HTML support with live preview***
Advanced Color Controls**: Hex, RGB, HSL color formats * **Template System**: German,
English, and custom templates * **Branding Options**: Custom sender names and professional
styling

#### Installation & Setup

**Basic Installation**
 1. WordPress Admin  Plugins  Add New 2. Search for “Keyless
Auth” 3. Install and activate 4. Add [keyless-auth] shortcode to any page

**SMTP Configuration (Recommended)**
 1. Navigate to Keyless Auth  SMTP 2. Configure
your email provider (Gmail, Outlook, SendGrid, etc.) 3. Test email delivery 4. Save
settings

**Two-Factor Authentication Setup**
 1. Go to Keyless Auth  Options 2. Enable “Two-
Factor Authentication” 3. Select required user roles 4. Users scan QR code with 
authenticator app

#### Email Templates

**Template Options**
 * **German Professional**: Sleek German-language template ***
English Simple**: Clean, minimalist design * **Custom HTML**: Create your own with
WYSIWYG editor

**Customization Features**
 * Full HTML and CSS support * Color picker for buttons
and links * Responsive email design * Live template preview * Placeholder system
for dynamic content

#### Security & Compliance

**Token Security**
 * Generated using WordPress security standards * Based on user
ID, timestamp, and wp-config.php salt * 10-minute expiration with single-use enforcement*
Secure database storage with automatic cleanup

**Two-Factor Authentication**
 * TOTP-based system compatible with Google Authenticator,
Authy * Role-based requirements for granular control * Grace period system for smooth
user transitions * Custom verification forms with professional styling

**Database Architecture**
 * Custom tables for optimal performance * Comprehensive
audit logging * Device tracking and IP monitoring * Automatic maintenance and cleanup
routines

#### Security Hardening

Keyless Auth includes comprehensive security hardening features to protect your 
WordPress site from common attack vectors. All features are optional and can be 
enabled based on your siteÌtumọ̀ Yorùbá: ’s needs.

**XML-RPC Disable**
 * Prevents brute force attacks via WordPress XML-RPC interface*
Reduces attack surface by disabling legacy API * Recommended for sites not using
Jetpack, mobile apps, or pingbacks

**Application Passwords Control**
 * Disable REST API and XML-RPC authentication
when programmatic access isnÌtumọ̀ Yorùbá: ’t needed * Prevents unauthorized API
access * Recommended for simple sites without third-party integrations

**User Enumeration Prevention**
 * Blocks REST API user endpoints (`/wp-json/wp/
v2/users`) * Redirects author archives and `?author=N` queries * Removes login error
messages that reveal usernames * Strips comment author CSS classes * Removes author
data from oEmbed responses * Recommended for business/corporate sites without author
profiles

**Benefits**
 * Combined protection against brute force attacks * Prevents username
discovery for targeted attacks * Reduces unauthorized API access * Easy to configure
without code or .htaccess modifications * All features include comprehensive documentation*
FTP recovery available if needed

#### SMTP & Email Delivery

**Supported Providers**
 * Gmail / Google Workspace * Outlook / Microsoft 365 * 
Mailgun, SendGrid, Amazon SES * Any SMTP-compatible service

**Advanced Email Features**
 * Message-ID domain alignment for deliverability * 
SPF/DKIM/DMARC compliance * Custom sender names and addresses * Bulk email log management*
Delivery status tracking

**Secure Credential Storage**
 Store SMTP credentials securely in wp-config.php:

    ```
    define('CHRMRTNS_KLA_SMTP_USERNAME', 'your-email@example.com');
    define('CHRMRTNS_KLA_SMTP_PASSWORD', 'your-smtp-password');
    ```

#### WordPress Integration

**Login Page Integration**
 * Optional magic login field on wp-login.php * Seamless
integration with existing login flow * Toggle control for easy enable/disable * 
Clean, responsive form styling

**Shortcode Usage**
 Use `[keyless-auth]` anywhere: pages, posts, widgets, or custom
templates.

#### Developer Features

**Hooks & Filters**

Customize login redirect:
 add_filter(‘wpa_after_login_redirect’, ‘custom_redirect_function’);

Modify email headers:
 add_filter(‘wpa_email_headers’, ‘custom_email_headers’);

Change token expiration:
 add_filter(‘wpa_change_link_expiration’, ‘custom_expiration_time’);

**Modular Architecture**
 * Clean, organized class structure * Separated concerns
for easy maintenance * WordPress coding standards compliance * Extensive documentation
and comments

#### Requirements

 * **WordPress**: 3.9 or higher (tested up to 6.8)
 * **PHP**: 7.4 or higher
 * **Email Delivery**: SMTP recommended for reliability

**Note**: Keyless Auth complements WordPressÌtumọ̀ Yorùbá: ’s default login system–
it doesnÌtumọ̀ Yorùbá: ’t replace it.

**Developed by Chris Martens | Based on the original Passwordless Login plugin by
Cozmoslabs**

## Àwọn àwòrán ìbòjú

 * [[
 * Front-end login form Ìtumọ̀ Yorùbá: – Clean, simple passwordless authentication
   interface
 * [[
 * Main admin dashboard Ìtumọ̀ Yorùbá: – Overview with shortcode info and success
   counter
 * [[
 * Email template settings Ìtumọ̀ Yorùbá: – Choose from predefined templates or 
   create custom ones
 * [[
 * WYSIWYG email editor Ìtumọ̀ Yorùbá: – Full HTML support for custom email templates
 * [[
 * SMTP configuration Ìtumọ̀ Yorùbá: – Secure credential storage with wp-config.
   php option
 * [[
 * Mail logs Ìtumọ̀ Yorùbá: – Track all sent emails with timestamps and preview
 * [[
 * Test email functionality Ìtumọ̀ Yorùbá: – Verify SMTP settings with one-click
   testing
 * [[
 * 2FA active status Ìtumọ̀ Yorùbá: – User dashboard showing active Two-Factor Authentication
   with backup codes and management options
 * [[
 * 2FA setup process Ìtumọ̀ Yorùbá: – QR code generation for easy setup with Google
   Authenticator, Authy, or similar TOTP apps
 * [[
 * 2FA admin options Ìtumọ̀ Yorùbá: – Administrative interface for configuring role-
   based 2FA requirements and user management
 * [[
 * Custom link settings Ìtumọ̀ Yorùbá: – Options page for configuring custom login
   and post-login redirect URLs

## Ìgbéwọlẹ̀

 1. Upload the keyless-auth folder to the ‘/wp-content/plugins/’ directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Go to Keyless Auth > Templates to configure email templates and colors
 4. Create a new page and use the shortcode [keyless-auth]

## FAQ

### Is this secure?

Yes. The token is created using wp_hash and itÌtumọ̀ Yorùbá: ’s based on the user
id, the current time and the salt in wp-config.php

### CouldnÌtumọ̀ Yorùbá: ’t anyone login if they have that link?

The token expires after 10 minutes and can only be used once. If people have access
to that link itÌtumọ̀ Yorùbá: ’s supposed they have access to your email, in which
case itÌtumọ̀ Yorùbá: ’s as safe as the default login, since they could reset their
passwords.

### IsnÌtumọ̀ Yorùbá: ’t it more complicated they just entering a password?

Weak passwords are used every day by users. There are also people who use the same
password across various services and websites. By using the Keyless Auth plugin 
your users will have one less password to worry about.

### How do I customize the email templates?

Go to Keyless Auth > Templates in your WordPress admin. You can choose from predefined
templates (German or English) or create your own custom HTML template using the 
built-in WYSIWYG editor with full HTML and CSS support.

### Can I change the colors in the emails?

Yes! In the settings page, you can customize button colors, button hover colors,
and link colors. Supports multiple color formats including hex (#007bff), RGB (rgb(
0,123,255)), HSL (hsl(211,100%,50%)), and HSLA colors. You can use either color 
pickers or enter color codes manually.

### Does the custom email editor support HTML?

Absolutely! The custom template editor includes a full WYSIWYG editor with HTML 
support. You can create rich email templates with custom styling, different font
sizes, colors, tables, and more. Switch between visual and HTML editing modes as
needed.

### How do I configure SMTP for reliable email delivery?

Go to Keyless Auth > SMTP in your WordPress admin. You can configure SMTP settings
for providers like Gmail, Outlook, Mailgun, SendGrid, and more. The plugin includes
automatic port configuration for SSL/TLS, connection testing, and debug tools to
ensure your emails are delivered reliably.

### Can I track what emails are being sent?

Yes! The Mail Logs feature allows you to monitor all emails sent from your WordPress
site. You can view complete email history with timestamps, recipients, subjects,
and even preview the full email content. This is perfect for troubleshooting delivery
issues and monitoring your siteÌtumọ̀ Yorùbá: ’s email activity.

### Can I customize the sender name in emails?

Absolutely! In the SMTP settings, you can enable “Force From Name” and set a custom
sender name like “Your Website Name” instead of just showing the email address. 
This makes emails look more professional and branded. The feature includes a toggle
control so you can easily enable or disable it.

### Can I store SMTP credentials securely outside the database?

Yes! Version 2.0.4 introduces secure credential storage options. You can choose 
to store SMTP username and password in wp-config.php instead of the database. This
is more secure as wp-config.php is typically outside the web root. Simply add these
constants to your wp-config.php:

    ```
        define('CHRMRTNS_PA_SMTP_USERNAME', 'your-email@example.com');
        define('CHRMRTNS_PA_SMTP_PASSWORD', 'your-smtp-password');

    Then select "Store in wp-config.php" in the SMTP settings.
    ```

### How do I set up Two-Factor Authentication (2FA)?

Go to Keyless Auth > Options in your WordPress admin and enable “Two-Factor Authentication”.
You can then configure which user roles require 2FA and manage individual users 
who have 2FA enabled. Users can set up 2FA by visiting their profile page where 
theyÌtumọ̀ Yorùbá: ’ll see a QR code to scan with Google Authenticator, Authy, or
any TOTP-compatible app.

### Can I require 2FA for specific user roles only?

Yes! In the 2FA settings, you can select which user roles should be required to 
use 2FA. For example, you might require 2FA for Administrators and Editors while
leaving it optional for Subscribers. Users in required roles will be prompted to
set up 2FA on their next login.

### How does 2FA work with magic links?

When 2FA is enabled, the magic link authentication flow is enhanced for security.
If a user has 2FA enabled (or their role requires it), theyÌtumọ̀ Yorùbá: ’ll first
receive the magic link email, but after clicking the link, theyÌtumọ̀ Yorùbá: ’ll
be prompted to enter their 2FA code before being logged in. This prevents 2FA bypass
vulnerabilities.

### WhatÌtumọ̀ Yorùbá: ’s different from the original Passwordless Login plugin?

This enhanced version includes: modular class-based architecture, complete Two-Factor
Authentication system, SMTP configuration, email logging & monitoring, WYSIWYG email
editor, visual template previews, advanced color controls (hex/RGB/HSL), separate
button and link colors, dedicated admin menu, enhanced security with comprehensive
nonce verification, HTML email support, and professional styling options.

### What does the modular architecture mean for developers?

In v2.0.1, we completely refactored the plugin from a single 1868-line file into
clean, organized classes. Each functionality (authentication, SMTP, mail logging,
email templates, admin interface) is now in its own dedicated class file. This makes
the code much easier to maintain, extend, and debug. Developers can now easily customize
specific features without affecting others.

### Why did you create this plugin? What inspired Keyless Auth?

Great question! We built Keyless Auth out of real-world frustration with password
complexity and user experience challenges. The story involves too many plugins, 
security concerns, and the quest for the perfect balance between usability and security.
Read the full story behind the pluginÌtumọ̀ Yorùbá: ’s creation: [How Many Plugins Are Too Many? Just One More: Why We Built Keyless Auth](https://chris-martens.com/blog/how-many-plugins-are-too-many-just-one-more-why-we-built-keyless-auth/)

### Password login not working with [keyless-auth-full] shortcode?

If the password login form reloads without logging in or showing errors, but magic
link login works fine, check if your page builder has custom authentication page
settings enabled. Page builders like Bricks Builder, Elementor Pro, and Divi often
have settings that redirect wp-login.php to custom pages, which conflicts with WordPressÌtumọ̀
Yorùbá: ’s default password form submission.

    ```
    **Solution for Bricks Builder**: Go to Bricks  Settings  General  Custom authentication pages, and disable the "Login Page" setting.

    **Solution for other page builders**: Look for similar "custom login page" or "authentication page" settings in your page builder's configuration and disable them.

    **Why does magic link work?** Magic link forms submit to the current page, while WordPress's password form (wp_login_form) submits to wp-login.php, which gets intercepted by the page builder.
    ```

### I canÌtumọ̀ Yorùbá: ’t find a question similar to my issue; Where can I find support?

For plugin support, please use the WordPress.org support forum for Keyless Auth.
For bug reports and feature requests, you can also visit our GitHub repository. 
For support with the original Passwordless Login functionality, visit http://www.
cozmoslabs.com.

## Àwọn àgbéyẹ̀wò

Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.

## Àwọn Olùkópa & Olùgbéejáde

“Keyless Auth Ìtumọ̀ Yorùbá: – Login without Passwords” jẹ́ ètò ìṣàmúlò orísun ṣíṣí
sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa sí plugin yìí.

Àwọn Olùkópa

 *   [ Chris Martens ](https://profiles.wordpress.org/chrmrtns/)

[Túmọ̀ “Keyless Auth Ìtumọ̀ Yorùbá: – Login without Passwords” sí èdè rẹ.](https://translate.wordpress.org/projects/wp-plugins/keyless-auth)

### Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?

[Ṣàwárí koodu](https://plugins.trac.wordpress.org/browser/keyless-auth/), ṣàyẹ̀wò
[ibi ìpamọ́ SVN](https://plugins.svn.wordpress.org/keyless-auth/), tàbí ṣe àgbékalẹ̀
sí [àkọsílẹ̀ ìdàgbàsókè](https://plugins.trac.wordpress.org/log/keyless-auth/) nípasẹ̀
[RSS](https://plugins.trac.wordpress.org/log/keyless-auth/?limit=100&mode=stop_on_copy&format=rss).

## Àkọsílẹ̀ àwọn àyípadà

#### 3.2.4

 * FIX: Critical error when entering unregistered email in login form Ìtumọ̀ Yorùbá:–
   Fixed missing namespace prefix for WP_Error class
 * IMPROVEMENT: WordPress 6.9 email compatibility Ìtumọ̀ Yorùbá: – Added Sender 
   property for better SPF/DMARC alignment
 * IMPROVEMENT: Envelope-From (Sender) now matches From address for improved email
   deliverability
 * TECHNICAL: SMTP configuration now sets both From and Sender properties for authentication
   compliance

#### 3.2.3

 * SECURITY: Replaced all wp_redirect() with wp_safe_redirect() for enhanced security(
   21 occurrences)
 * SECURITY: Added wp_validate_redirect() validation for custom/external URLs with
   fallback to safe defaults
 * FIX: WordPress Plugin Check compliance Ìtumọ̀ Yorùbá: – All redirect security
   warnings resolved
 * FIX: Core hook “wp_login” properly ignored with phpcs comment (WordPress core
   hook, not plugin hook)
 * IMPROVEMENT: Dynamic notification hooks properly documented with phpcs ignore
   comments
 * TECHNICAL: Custom redirect URLs from options now validated before redirect
 * TECHNICAL: Magic login redirect URLs from transients validated with fallback 
   to admin_url()
 * TECHNICAL: All 4 files updated: Core.php (8 fixes), TwoFA/Core.php (11 fixes),
   Admin/Admin.php (1 fix), Notices.php (6 comments)

#### 3.2.2

 * FIX: Login error display on custom login pages Ìtumọ̀ Yorùbá: – Wrong password/
   username errors now display properly instead of blank error
 * FIX: wp_login_failed hook integration Ìtumọ̀ Yorùbá: – Failed login attempts 
   now redirect to custom login page with error parameters
 * IMPROVEMENT: Error messages preserved during wp-login.php to custom page redirect
   flow
 * IMPROVEMENT: Better error handling for standard WordPress password forms on custom
   login pages
 * TECHNICAL: Added handle_failed_login() method to catch authentication failures
   and redirect with error codes
 * TECHNICAL: Error parameters (login_error, login) now properly preserved and displayed
   via shortcodes
 * COMPATIBILITY: Works harmoniously with User Enumeration Prevention feature Ìtumọ̀
   Yorùbá: – no conflicts

#### 3.2.1

 * NEW: Support URL setting in Options page Ìtumọ̀ Yorùbá: – Configure optional 
   support footer on password reset page
 * FIX: Registered missing chrmrtns_kla_support_url option that was referenced but
   not functional
 * IMPROVEMENT: Password reset page can now display custom support link when configured

#### 3.2.0

 * NEW: Custom Password Reset Page Ìtumọ̀ Yorùbá: – Replace wp-login.php with branded
   shortcode-based reset page
 * NEW: Password reset shortcode [keyless-auth-password-reset] Ìtumọ̀ Yorùbá: – 
   Embed on any page with any slug
 * NEW: Custom password reset URL setting Ìtumọ̀ Yorùbá: – Specify your own password
   reset page URL
 * NEW: Two-step password reset flow Ìtumọ̀ Yorùbá: – Email request form and password
   reset form with token validation
 * NEW: Beautiful styled reset forms Ìtumọ̀ Yorùbá: – Matching Keyless Auth gradient
   branding
 * IMPROVEMENT: Flexible page URL Ìtumọ̀ Yorùbá: – No hardcoded /reset-password 
   route, users choose their own slug
 * IMPROVEMENT: Smart “Forgot password?” link Ìtumọ̀ Yorùbá: – Auto-switches between
   custom page and wp-login.php
 * IMPROVEMENT: Optional support footer Ìtumọ̀ Yorùbá: – Only displays if support
   URL is configured
 * IMPROVEMENT: Properly scoped CSS Ìtumọ̀ Yorùbá: – All styles prefixed to avoid
   theme conflicts
 * TECHNICAL: New PasswordReset class at includes/Core/PasswordReset.php
 * TECHNICAL: Full translation support with _e() and esc_html_e() functions
 * TECHNICAL: Token validation using WordPress check_password_reset_key() function
 * TECHNICAL: Secure nonce validation for both email request and password reset 
   forms

#### 3.1.0

 * NEW: WooCommerce Integration Ìtumọ̀ Yorùbá: – Magic link authentication on WooCommerce
   login forms
 * NEW: Collapsible UI design Ìtumọ̀ Yorùbá: – “Or login with magic link instead”
   toggle link on My Account and Checkout pages
 * NEW: WooCommerce setting toggle Ìtumọ̀ Yorùbá: – Enable/disable integration from
   Options page
 * NEW: Modular architecture Ìtumọ̀ Yorùbá: – Separate WooCommerce.php class for
   clean code organization
 * NEW: Auto-detection Ìtumọ̀ Yorùbá: – Only loads when WooCommerce is active and
   setting is enabled
 * NEW: Smart checkout redirect Ìtumọ̀ Yorùbá: – Users return to checkout after 
   login, preserving cart
 * FIX: Custom email template not saving Ìtumọ̀ Yorùbá: – Fixed field name mismatch(
   chrmrtns_kla_custom_email_body vs chrmrtns_kla_custom_email_html)
 * FIX: Reset custom template function now uses correct option name (chrmrtns_kla_custom_email_body)
 * FIX: Template sanitization now preserves inline styles and tags properly with
   wp_kses
 * IMPROVEMENT: Real-time color preview updates Ìtumọ̀ Yorùbá: – All template previews
   update instantly when colors change
 * IMPROVEMENT: WordPress standard notice classes Ìtumọ̀ Yorùbá: – Replaced inline
   styles with ‘notice notice-warning/info inline’ classes
 * IMPROVEMENT: Added helpful notice explaining WYSIWYG placeholder behavior in 
   custom template editor
 * IMPROVEMENT: Seamless integration with WooCommerce themes Ìtumọ̀ Yorùbá: – Minimal,
   non-intrusive styling
 * IMPROVEMENT: Vanilla JavaScript implementation Ìtumọ̀ Yorùbá: – No jQuery dependency
   for WooCommerce integration
 * IMPROVEMENT: Dynamic toggle text Ìtumọ̀ Yorùbá: – Changes from “Or login with
   magic link instead” to “Close magic link form”
 * IMPROVEMENT: Dedicated AJAX handler Ìtumọ̀ Yorùbá: – Separate handler for WooCommerce
   requests with proper JSON responses
 * DEVELOPER: Foundation for Pro features Ìtumọ̀ Yorùbá: – WooCommerce integration
   ready for future enhancements
 * TECHNICAL: PSR-4 namespaced class at includes/Core/WooCommerce.php
 * TECHNICAL: Uses Fetch API for modern AJAX requests
 * TRANSLATION: Added 10+ new translatable strings for WooCommerce integration

#### 3.0.5

 * NEW: Help page tabs Ìtumọ̀ Yorùbá: – Added tabbed navigation for better organization
   of help content
 * UX: Organized help content into 7 sections: Getting Started, Shortcodes, Two-
   Factor Auth, Customization, Security, Troubleshooting, and Advanced
 * TECHNICAL: Implemented pure CSS tabs using :checked pseudo-selectors (no JavaScript
   required)
 * IMPROVEMENT: Better content discoverability and navigation in admin help interface

#### 3.0.4

 * FIX: Critical Ìtumọ̀ Yorùbá: – wp-login.php options conflict Ìtumọ̀ Yorùbá: –
   cannot login when both “Enable Login on wp-login.php” and “Redirect wp-login.
   php” are active
 * IMPROVEMENT: Added mutual exclusion logic Ìtumọ̀ Yorùbá: – redirect option now
   automatically disables wp-login.php magic login integration
 * IMPROVEMENT: Added admin warning notice explaining when options conflict and 
   why one is disabled
 * IMPROVEMENT: Enhanced help text under both options explaining their incompatibility
 * UX: Clear visual feedback when conflicting options are enabled with actionable
   guidance
 * TECHNICAL: wp-login.php integration hooks only fire when redirect is disabled
   to prevent login issues

#### 3.0.3

 * NEW: CSS variable customization hooks Ìtumọ̀ Yorùbá: – chrmrtns_kla_custom_css_variables
   and chrmrtns_kla_2fa_custom_css_variables filters
 * NEW: Theme integration system Ìtumọ̀ Yorùbá: – Map plugin CSS variables to your
   themeÌtumọ̀ Yorùbá: ’s color system without !important
 * NEW: Comprehensive theme integration documentation in Help page with code examples
 * IMPROVEMENT: Enhanced 2FA active page styling Ìtumọ̀ Yorùbá: – Proper boxed containers
   matching setup page design
 * IMPROVEMENT: Better CSS cascade order using wp_add_inline_style() for clean theme
   customization
 * FIX: Email template settings save Ìtumọ̀ Yorùbá: – Added proper PHPCS ignore 
   comments for nonce verification (verified in parent method)
 * DEVELOPER: Filter hooks allow programmatic CSS variable overrides for automatic
   theme matching
 * DEVELOPER: Supports dark mode integration via filter hooks with theme-specific
   CSS variable mapping
 * DOCUMENTATION: Added “Theme Integration (Advanced)” section to Help page with
   basic and advanced examples

#### 3.0.2

 * FIX: Critical Ìtumọ̀ Yorùbá: – Fixed fatal error in 2FA magic link login flow(
   Core::get_instance() namespace confusion)
 * FIX: Critical Ìtumọ̀ Yorùbá: – Fixed incorrect get_redirect_url() method call(
   Admin vs OptionsPage class reference)
 * FIX: WooCommerce compatibility Ìtumọ̀ Yorùbá: – Changed 2FA verification hook
   from ‘init’ to ‘template_redirect’ to prevent cart warnings
 * FIX: Database query Ìtumọ̀ Yorùbá: – Fixed wpdb::prepare() called without placeholder
   in get_2fa_users() causing PHP notice
 * IMPROVEMENT: Better timing for 2FA verification page rendering to ensure compatibility
   with WooCommerce and other plugins
 * TECHNICAL: Added OptionsPage import to Core class for proper redirect URL handling
 * TECHNICAL: Updated TwoFA Core class to use template_redirect hook for proper 
   WordPress hook sequence

#### 3.0.1

 * ACCESSIBILITY: Full WCAG 2.1 Level AA compliance achieved
 * ACCESSIBILITY: Added ARIA live regions for error/success messages (role=”alert”,
   role=”status”)
 * ACCESSIBILITY: Added aria-label to all forms and interactive elements for screen
   readers
 * ACCESSIBILITY: Added aria-required=”true” to required form inputs
 * ACCESSIBILITY: Added aria-describedby linking form inputs to helper text
 * ACCESSIBILITY: Added screen reader only text (.sr-only) utility class to all 
   CSS files
 * ACCESSIBILITY: QR code containers now have proper role=”img” and descriptive 
   labels
 * ACCESSIBILITY: 2FA verification inputs include screen reader hints for code format
 * ACCESSIBILITY: Copy buttons now have contextual aria-label for better screen 
   reader support
 * ACCESSIBILITY: All status indicators use aria-live for dynamic content announcements
 * IMPROVEMENT: Enhanced keyboard navigation with visible focus states throughout
 * IMPROVEMENT: Error messages now properly announced to assistive technology
 * IMPROVEMENT: Loading states communicated to screen readers with appropriate ARIA
 * COMPATIBILITY: Admin page logos already compliant with proper alt attributes

#### 3.0.0

 * ARCHITECTURAL: Complete refactoring to PSR-4 autoloading with namespaces
 * IMPROVEMENT: Modern PHP class organization Ìtumọ̀ Yorùbá: – `Chrmrtns\KeylessAuth`
   namespace
 * IMPROVEMENT: Better IDE support and code intelligence
 * IMPROVEMENT: Cleaner code structure organized by functionality
 * TECHNICAL: Autoloader replaces manual class loading
 * TECHNICAL: Classes organized: Core/, Admin/, Email/, Security/TwoFA/
 * BREAKING: Internal class names changed (no impact on users, data preserved)
 * MAINTENANCE: All database tables, options, and user data remain unchanged
 * MAINTENANCE: Seamless upgrade Ìtumọ̀ Yorùbá: – no manual steps required
 * FIX: Mail logging status tracking Ìtumọ̀ Yorùbá: – Fixed critical bug where failed
   emails showed as “Sent”
 * FIX: DNS validation for invalid email domains Ìtumọ̀ Yorùbá: – Emails with non-
   existent domains now marked as “Failed”
 * FIX: Database.php log_email() now returns actual insert_id instead of row count

#### 2.7.3

 * CRITICAL FIX: Magic link token validation Ìtumọ̀ Yorùbá: – Fixed database table
   name mismatches causing “token expired” errors
 * CRITICAL FIX: 2FA grace period redirect Ìtumọ̀ Yorùbá: – Fixed malformed URL 
   when grace period expires (proper use of add_query_arg)
 * FIX: Database queries now correctly reference chrmrtns_kla_* tables instead of
   kla_* tables (10 query fixes)
 * FIX: Removed unused variable $code_hash in backup code validation function
 * TECHNICAL: Token validation was querying non-existent kla_login_tokens table 
   instead of chrmrtns_kla_login_tokens
 * TECHNICAL: Fixed inconsistency between table creation (chrmrtns_kla__) and queries(
   kla\__)
 * IMPACT: Users experiencing immediate token expiration on magic links should now
   login successfully

#### 2.7.2

 * FIX: Database table naming Ìtumọ̀ Yorùbá: – Renamed all tables from kla_* to 
   chrmrtns_kla_* for unique namespace and collision prevention
 * IMPROVEMENT: Automatic migration Ìtumọ̀ Yorùbá: – Old kla_* tables automatically
   renamed to chrmrtns_kla_* on plugin update (zero data loss)
 * IMPROVEMENT: WordPress best practices Ìtumọ̀ Yorùbá: – Tables now use unique 
   plugin identifier prefix following WordPress.org guidelines
 * TECHNICAL: Database version bumped to 1.2.0 with automatic version detection 
   and migration
 * TECHNICAL: Added migrate_old_tables() method for seamless backward compatibility

#### 2.7.1

 * FIX: User Enumeration Prevention now blocks ?author=N queries before WordPress
   canonical redirect
 * FIX: Misleading “2FA system is now active” message no longer appears when saving
   unrelated settings
 * ENHANCEMENT: ?author=N queries now blocked earlier using parse_request hook (
   more reliable)
 * ENHANCEMENT: Emergency mode message only displays when emergency mode checkbox
   is actually toggled
 * TECHNICAL: Added block_author_query_early() function to catch author queries 
   before redirect_canonical()
 * TECHNICAL: Fixed boolean type comparison in emergency mode setting change detection

#### 2.7.0

 * NEW: XML-RPC disable option for enhanced security Ìtumọ̀ Yorùbá: – prevent brute
   force attacks via XML-RPC
 * NEW: Application Passwords disable option Ìtumọ̀ Yorùbá: – block REST API and
   XML-RPC authentication when not needed
 * NEW: User Enumeration Prevention Ìtumọ̀ Yorùbá: – comprehensive protection against
   username discovery attacks
 * NEW: Security Settings section in Options page with three hardening options
 * SECURITY: Block REST API user endpoints, author archives, login errors, and comment
   author classes
 * SECURITY: Option to disable WordPress XML-RPC interface to reduce attack surface
 * SECURITY: Option to disable Application Passwords for sites not requiring programmatic
   access
 * ENHANCEMENT: Admin can now easily harden WordPress without code or .htaccess 
   modifications
 * ENHANCEMENT: Comprehensive Help page documentation for all security features
 * COMPATIBILITY: All security options are optional and respect existing integrations
 * COMPATIBILITY: Recovery via FTP deactivation if needed

#### 2.6.3

 * PERFORMANCE: CSS files now load conditionally only when shortcodes are used (
   saves ~15KB on pages without login forms)
 * PERFORMANCE: 2FA CSS and JS now load conditionally only when [keyless-auth-2fa]
   shortcode is used (saves additional ~38KB)
 * PERFORMANCE: CSS no longer loads on every page globally, only when [keyless-auth],[
   keyless-auth-full], or [keyless-auth-2fa] shortcodes are rendered
 * PERFORMANCE: wp-login.php integration still loads CSS automatically when enabled
 * NEW: Dark Mode Behavior setting in Options page Ìtumọ̀ Yorùbá: – control how 
   forms appear in dark mode
 * NEW: Three dark mode options: Auto (default, respects system + theme), Light 
   Only (force light), Dark Only (force dark)
 * NEW: Separate CSS files for light-only and dark-only modes (forms-enhanced-light.
   css, forms-enhanced-dark.css)
 * ENHANCEMENT: Better performance for sites with many pages without login forms(
   total savings: ~53KB per page)
 * ENHANCEMENT: Admin can now force light or dark theme regardless of user system
   preferences
 * COMPATIBILITY: Dark mode setting works with all major WordPress themes and block
   themes

#### 2.6.2

 * FIX: Replaced hardcoded colors in style-front-end.css with CSS variables for 
   proper dark mode support
 * FIX: Added max-width (400px) to .chrmrtns-box for consistent message box width
   matching form width
 * NEW: Added shortcode customization parameters to [keyless-auth]: button_text,
   description, label
 * IMPROVEMENT: Alert/success/error boxes now support dark mode and can be customized
   via CSS variables
 * ENHANCEMENT: Shortcode now allows custom button text, field labels, and description
   text for better branding

#### 2.6.1

 * FIX: Dark mode CSS variable inheritance Ìtumọ̀ Yorùbá: – fixed Ìtumọ̀ Yorùbá:–
   kla-primary-light not defined for dark mode causing light backgrounds in 2FA 
   info boxes
 * FIX: Replaced all remaining hardcoded colors in 2fa-frontend.css with CSS variables
   for proper dark mode support
 * FIX: Secondary button hover states now use CSS variables instead of hardcoded
   light blue colors
 * FIX: Copy button styling now uses CSS variables for proper theme adaptation
 * FIX: Notice sections (.chrmrtns-2fa-notice) now use CSS variables instead of 
   hardcoded #f0f6fc
 * IMPROVEMENT: Added cache busters to CSS file enqueues (forms-enhanced.css .4,
   2fa-frontend.css .2) to force browser refresh
 * IMPROVEMENT: All CSS variables now properly cascade from :root level for easy
   theme customization via WPCodeBox or custom CSS
 * COMPATIBILITY: CSS variables can now be easily overridden using custom CSS snippets
   for complete color control

#### 2.6.0

 * NEW: Enhanced CSS system using CSS custom properties for consistent theming across
   all forms
 * NEW: Block theme compatibility Ìtumọ̀ Yorùbá: – forms now work perfectly with
   Twenty Twenty-Five and other block themes
 * NEW: Professional blue color scheme (#0073aa) aligned with WordPress admin UI
   standards
 * NEW: Dark mode support with automatic color adjustments based on system preferences
 * NEW: High contrast mode support for improved accessibility
 * NEW: Reduced motion support for users with motion sensitivity
 * IMPROVEMENT: Higher CSS specificity without using !important rules for better
   maintainability
 * IMPROVEMENT: Responsive mobile-first design with proper touch targets (16px minimum
   on mobile)
 * IMPROVEMENT: Enhanced accessibility with proper focus states, ARIA support, and
   keyboard navigation
 * IMPROVEMENT: Added wrapper classes (chrmrtns-kla-form-wrapper) for better style
   isolation
 * FIX: Form styling conflicts with block themes completely resolved
 * FIX: Input field styling now consistent across all WordPress themes
 * FIX: Button hover, active, and focus states properly styled with visual feedback
 * FIX: Checkbox styling enhanced with custom SVG checkmark
 * COMPATIBILITY: Full responsive design optimized for mobile devices
 * ACCESSIBILITY: Comprehensive accessibility improvements including focus indicators
   and screen reader support

**For older changelog entries (versions 2.5.0 and earlier), please visit:**
 https://
github.com/chrmrtns/keyless-auth/blob/main/README.md

## Àkójọpọ̀ Meta

 *  Ẹ̀yà **3.2.4**
 *  Ìgbàgbọ́hùn tó kẹ́yìn **oṣù 5 sẹ́yìn**
 *  Àwọn ìgbéwọlẹ̀ tó ṣiṣẹ́ **30+**
 *  Ẹ̀yà WordPress ** 3.9 tàbí ju bẹ́ẹ̀ lọ **
 *  Dánwò dé **6.8.5**
 *  Èdè
 * [English (US)](https://wordpress.org/plugins/keyless-auth/)
 * Àwọn àmì
 * [2FA](https://yor.wordpress.org/plugins/tags/2fa/)[authentication](https://yor.wordpress.org/plugins/tags/authentication/)
   [passwordless](https://yor.wordpress.org/plugins/tags/passwordless/)[secure login](https://yor.wordpress.org/plugins/tags/secure-login/)
   [smtp](https://yor.wordpress.org/plugins/tags/smtp/)
 *  [Ìwòye Tó Péye](https://yor.wordpress.org/plugins/keyless-auth/advanced/)

## Àwọn ìbò

Kò sí ìwádìí tí a tíì fi ránṣẹ́.

[Your review](https://wordpress.org/support/plugin/keyless-auth/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/keyless-auth/reviews/)

## Àwọn Olùkópa

 *   [ Chris Martens ](https://profiles.wordpress.org/chrmrtns/)

## Ìrànlọ́wọ́

Nǹkan wà tí o fẹ́ sọ? Ṣé o nílò ìrànlọ́wọ́?

 [Wo àpéjọ ìrànlọ́wọ́](https://wordpress.org/support/plugin/keyless-auth/)

## Ṣe ìtọrẹ

Ṣé o fẹ́ ṣe àtìlẹ́yìn fún ìlọsíwájú plugin yìí?

 [ Ṣe ìtọrẹ sí plugin yìí ](https://paypal.me/chrmrtns)