{"id":362811,"date":"2026-09-10T11:15:48","date_gmt":"2026-09-10T11:15:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wpum-email-otp-login\/"},"modified":"2026-09-10T11:15:24","modified_gmt":"2026-09-10T11:15:24","slug":"softenggmanoj-email-otp-user-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/softenggmanoj-email-otp-user-manager\/","author":23559252,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"softenggmanoj Email OTP Login for User Manager","header_author":"Manoj Sharma","header_description":"Adds email OTP verification to the User Manager frontend login.","assets_banners_color":"","last_updated":"2026-09-10 11:15:24","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"softenggmanoj","date":"2026-09-10 11:15:24","revision":3689800}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[209326,1229,155171,91007],"plugin_category":[],"plugin_contributors":[280081],"plugin_business_model":[],"class_list":["post-362811","plugin","type-plugin","status-publish","hentry","plugin_tags-email-otp","plugin_tags-login-security","plugin_tags-otp-login","plugin_tags-user-manager","plugin_contributors-softenggmanoj","plugin_committers-softenggmanoj"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/softenggmanoj-email-otp-user-manager.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Email OTP Login for User Manager adds an additional email verification step to the frontend login form provided by WP User Manager.<\/p>\n\n<p>After a user enters valid username and password credentials, the plugin generates a one-time verification code and sends it to the user's registered email address. The user must enter the verification code before the WordPress login is completed.<\/p>\n\n<p>The plugin is designed for websites using WP User Manager where additional verification is required for frontend user logins.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Email-based one-time password (OTP) verification.<\/li>\n<li>Works with the WP User Manager frontend login form.<\/li>\n<li>Six-digit OTP codes.<\/li>\n<li>OTP codes are stored securely as hashes.<\/li>\n<li>Configurable OTP expiration period.<\/li>\n<li>Limits the number of incorrect OTP attempts.<\/li>\n<li>Invalidates the OTP after the maximum number of failed attempts.<\/li>\n<li>Prevents the WordPress login from being completed until OTP verification succeeds.<\/li>\n<li>Uses WordPress nonces for OTP form security.<\/li>\n<li>Supports WordPress email delivery through wp_mail().<\/li>\n<li>Administrators and other users logging in through the WP User Manager frontend login can use the OTP verification flow.<\/li>\n<li>Does not modify the standard WordPress wp-login.php authentication flow.<\/li>\n<\/ul>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 6.0 or later.<\/li>\n<li>PHP 7.4 or later.<\/li>\n<li>WP User Manager.<\/li>\n<\/ul>\n\n<p>The website must have working WordPress email delivery configured. For reliable email delivery, an SMTP plugin or another transactional email service may be used.<\/p>\n\n<h3>Usage<\/h3>\n\n<p>After installation, add the following shortcode to the page that will be used for OTP verification:<\/p>\n\n<p>[softemot_email_otp_login]<\/p>\n\n<p>When a user successfully submits their username and password through the WP User Manager frontend login form:<\/p>\n\n<ol>\n<li>The credentials are validated.<\/li>\n<li>A one-time verification code is generated.<\/li>\n<li>The verification code is sent to the user's registered email address.<\/li>\n<li>The user is redirected to the OTP verification page.<\/li>\n<li>The user enters the verification code.<\/li>\n<li>The WordPress login is completed only after successful OTP verification.<\/li>\n<\/ol>\n\n<h3>Security<\/h3>\n\n<p>OTP codes are not stored in plain text. The plugin stores a hash of the generated OTP.<\/p>\n\n<p>OTP verification attempts are limited. When the maximum number of incorrect attempts is reached, the current OTP is invalidated and the user must start the login process again.<\/p>\n\n<p>The OTP verification form uses a WordPress nonce to help protect the verification request.<\/p>\n\n<h3>Email Delivery<\/h3>\n\n<p>This plugin uses WordPress's <code>wp_mail()<\/code> function to send verification codes.<\/p>\n\n<p>The plugin does not provide an SMTP mail server. If your website does not reliably send WordPress emails, configure an SMTP plugin or transactional email service separately.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WP User Manager.<\/li>\n<li>Upload the Email OTP Login for User Manager plugin to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin from the WordPress Plugins screen.<\/li>\n<li>Create a WordPress page with a slug \"verify-login-otp\" for OTP verification.<\/li>\n<li>Add the <code>[softemot_email_otp_login]<\/code> shortcode to the OTP verification page.<\/li>\n<li>Update the OTP page URL in the plugin configuration if required.<\/li>\n<li>Make sure WordPress can successfully send emails.<\/li>\n<li>Test the WP User Manager frontend login form.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20replace%20wp%20user%20manager%3F\"><h3>Does this plugin replace WP User Manager?<\/h3><\/dt>\n<dd><p>No. WP User Manager is required for the frontend login functionality. This plugin adds email OTP verification to that login process.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20standard%20wordpress%20login%20page%3F\"><h3>Does it work with the standard WordPress login page?<\/h3><\/dt>\n<dd><p>The plugin is designed for the WP User Manager frontend login form. The standard <code>\/wp-login.php<\/code> login process is not modified.<\/p><\/dd>\n<dt id=\"can%20administrators%20use%20otp%20verification%3F\"><h3>Can administrators use OTP verification?<\/h3><\/dt>\n<dd><p>Yes. If an administrator logs in through the WP User Manager frontend login form, the same OTP verification process is applied.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20the%20otp%20expires%3F\"><h3>What happens when the OTP expires?<\/h3><\/dt>\n<dd><p>The expired OTP can no longer be used. The user must start the login process again to receive a new verification code.<\/p><\/dd>\n<dt id=\"what%20happens%20after%20too%20many%20incorrect%20attempts%3F\"><h3>What happens after too many incorrect attempts?<\/h3><\/dt>\n<dd><p>The current OTP is invalidated and the user must log in again to generate a new verification code.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20emails%20directly%20through%20an%20external%20service%3F\"><h3>Does the plugin send emails directly through an external service?<\/h3><\/dt>\n<dd><p>No. The plugin uses WordPress <code>wp_mail()<\/code>. Your website's configured mail delivery system determines how the email is delivered.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Added email OTP verification for WP User Manager frontend login.<\/li>\n<li>Added OTP expiration.<\/li>\n<li>Added failed-attempt protection.<\/li>\n<li>Added secure OTP storage.<\/li>\n<li>Added OTP verification form.<\/li>\n<li>Added login protection until OTP verification succeeds.<\/li>\n<\/ul>","raw_excerpt":"Adds email OTP verification to the WP User Manager frontend login form.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/362811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=362811"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/softenggmanoj"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=362811"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=362811"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=362811"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=362811"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=362811"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=362811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}