{"id":275958,"date":"2026-01-23T18:35:32","date_gmt":"2026-01-23T18:35:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/elevation-magic-link-login\/"},"modified":"2026-01-23T18:34:54","modified_gmt":"2026-01-23T18:34:54","slug":"elevation-magic-link","status":"publish","type":"plugin","link":"https:\/\/mk.wordpress.org\/plugins\/elevation-magic-link\/","author":20860283,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.2","stable_tag":"1.2.2","tested":"6.9.4","requires":"5.0","requires_php":"","requires_plugins":null,"header_name":"Elevation Magic Link Login","header_author":"Elevation","header_description":"Adds a \"Magic Link\" option to the default WordPress login form.","assets_banners_color":"5a335a","last_updated":"2026-01-23 18:34:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/elevationweb.org\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":133,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.2":{"tag":"1.2.2","author":"elevation1support","date":"2026-01-23 18:34:54"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3445817,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3445817,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3445817,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3445817,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.2"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[710,602,185112,9223,600],"plugin_category":[38,54],"plugin_contributors":[243715,243716],"plugin_business_model":[],"class_list":["post-275958","plugin","type-plugin","status-publish","hentry","plugin_tags-authentication","plugin_tags-login","plugin_tags-magic-link","plugin_tags-passwordless","plugin_tags-security","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_contributors-elevation1support","plugin_contributors-msuarez25","plugin_committers-elevation1support"],"banners":{"banner":"https:\/\/ps.w.org\/elevation-magic-link\/assets\/banner-772x250.png?rev=3445817","banner_2x":"https:\/\/ps.w.org\/elevation-magic-link\/assets\/banner-1544x500.png?rev=3445817","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/elevation-magic-link\/assets\/icon-128x128.png?rev=3445817","icon_2x":"https:\/\/ps.w.org\/elevation-magic-link\/assets\/icon-256x256.png?rev=3445817","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Elevation Magic Link Login allows your users to sign in without remembering a password. By simply entering their username or email address, they receive a secure, time-sensitive link via email that logs them in instantly.<\/p>\n\n<p>This plugin is built with security as a priority, utilizing WordPress best practices such as nonces, input sanitization, output escaping, hashed tokens, and HMAC signatures to ensure your site and users remain protected.<\/p>\n\n<h4>Features<\/h4>\n\n<p>Adds a \"Send Me a Magic Link\" button to the default WP login form.<\/p>\n\n<p>New: Toggle-based UI that hides the password field when requesting a link for a cleaner experience.<\/p>\n\n<p>Secure, high-entropy token generation.<\/p>\n\n<p>Tokens are hashed before storage for maximum security.<\/p>\n\n<p>Cross-device support: Uses stateless HMAC signatures to validate links even if opened on a different device than requested.<\/p>\n\n<p>One-time use links that expire after 15 minutes (filterable).<\/p>\n\n<p>No-password fallback for users who forget their credentials.<\/p>\n\n<p>Lightweight and developer-friendly.<\/p>\n\n<p>Filterable redirect URL after successful login.<\/p>\n\n<!--section=installation-->\n<p>Upload the elevation-magic-link-login folder to the \/wp-content\/plugins\/ directory.<\/p>\n\n<p>Activate the plugin through the 'Plugins' menu in WordPress.<\/p>\n\n<p>Your login page will now display the Magic Link button.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20long%20do%20links%20stay%20valid%3F\"><h3>How long do links stay valid?<\/h3><\/dt>\n<dd><p>By default, links expire after 15 minutes. Developers can change this using the emll_token_expiration filter.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20the%20standard%20password%20login%3F\"><h3>Does this replace the standard password login?<\/h3><\/dt>\n<dd><p>No, it adds a secondary option. Users can still log in using their standard username and password.<\/p><\/dd>\n<dt id=\"how%20can%20i%20change%20the%20redirect%20url%3F\"><h3>How can I change the redirect URL?<\/h3><\/dt>\n<dd><p>You can use the emll_login_redirect filter in your theme's functions.php. Example:\nadd_filter('emll_login_redirect', function($url, $user) { return home_url('\/welcome'); }, 10, 2);<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.2<\/h4>\n\n<p>Improved UI: The \"Send Magic Link\" button now toggles the form view, hiding the password field and showing a specific email submission button.<\/p>\n\n<p>Added \"Back to Password Login\" link for better usability.<\/p>\n\n<h4>1.2.1<\/h4>\n\n<p>Security Update: Implemented Stateless HMAC Signature verification. This validates the link origin while allowing users to request on one device and login on another.<\/p>\n\n<p>Fix: Replaced raw script tags with wp_add_inline_script for better WordPress standard compliance.<\/p>\n\n<h4>1.2<\/h4>\n\n<p>Added emll_login_redirect filter for custom redirect URLs.<\/p>\n\n<p>Documentation updates.<\/p>\n\n<h4>1.1<\/h4>\n\n<p>Added hashed token storage.<\/p>\n\n<p>Improved security checks for user identification.<\/p>\n\n<p>Added CSRF protection via nonces.<\/p>\n\n<h4>1.0<\/h4>\n\n<p>Initial release.<\/p>","raw_excerpt":"Add a secure, passwordless login option to the default WordPress login form.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/275958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=275958"}],"author":[{"embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/elevation1support"}],"wp:attachment":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=275958"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=275958"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=275958"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=275958"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=275958"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=275958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}