{"id":252429,"date":"2025-09-21T19:20:09","date_gmt":"2025-09-21T19:20:09","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/allow-username-edit\/"},"modified":"2025-09-21T19:19:48","modified_gmt":"2025-09-21T19:19:48","slug":"allow-username-edit","status":"publish","type":"plugin","link":"https:\/\/sl.wordpress.org\/plugins\/allow-username-edit\/","author":15820960,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.7","stable_tag":"1.0.7","tested":"6.8.5","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Allow Username Edit","header_author":"Thomas Amundsen","header_description":"Allows administrators to safely edit usernames of registered users with built-in protection against accidental changes and email-like usernames. Features confirmation dialogs, security warnings, and comprehensive validation.","assets_banners_color":"31afc9","last_updated":"2025-09-21 19:19:48","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/thaxam","header_plugin_uri":"https:\/\/www.thaxam.no\/docs\/","header_author_uri":"https:\/\/www.thaxam.no\/wordpress-plugins\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":690,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.7":{"tag":"1.0.7","author":"thaxam","date":"2025-09-21 19:19:48"}},"upgrade_notice":{"1.0.7":"<p>This version improves security and maintainability by centralizing permission and nonce checks. It also adds validation to prevent email-like usernames and real-time warnings when typing &quot;@&quot; in the username field.<\/p>","1.0.5":"<p>This is a minor maintenance release to improve documentation and asset structure according to WordPress.org standards.<\/p>","1.0.4":"<p>This is a minor maintenance release to improve adherence to WordPress coding standards.<\/p>","1.0.3":"<p>This version fixes all internationalization calls to conform to WordPress coding standards.<\/p>","1.0.2":"<p>This version fixes a critical bug where the &quot;Activate&quot; checkbox was not rendering correctly.<\/p>","1.0.1":"<p>This version fixes a critical PHP error that could cause your site to crash.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3365406,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3365407,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772-250.png":{"filename":"banner-772-250.png","revision":3365403,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3365404,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3365405,"resolution":"2","location":"assets","locale":""}},"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[83,2239,248162,600,3995],"plugin_category":[38,54],"plugin_contributors":[247586],"plugin_business_model":[],"class_list":["post-252429","plugin","type-plugin","status-publish","hentry","plugin_tags-admin","plugin_tags-edit","plugin_tags-edit-username","plugin_tags-security","plugin_tags-username","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_contributors-thaxam","plugin_committers-thaxam"],"banners":{"banner":"https:\/\/ps.w.org\/allow-username-edit\/assets\/banner-772-250.png?rev=3365403","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/allow-username-edit\/assets\/icon-128x128.png?rev=3365406","icon_2x":"https:\/\/ps.w.org\/allow-username-edit\/assets\/icon-256x256.png?rev=3365407","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/allow-username-edit\/assets\/screenshot-1.png?rev=3365404","caption":""},{"src":"https:\/\/ps.w.org\/allow-username-edit\/assets\/screenshot-2.png?rev=3365405","caption":""}],"raw_content":"<!--section=description-->\n<p>The <strong>Allow Username Edit<\/strong> plugin provides a secure and user-friendly way for WordPress administrators to edit user usernames. By default, WordPress prevents username changes to maintain data integrity. This plugin overrides that limitation but adds a crucial safety feature: an <strong>activation checkbox<\/strong>.<\/p>\n\n<p>The username field is read-only by default, protecting it from accidental edits. To make a change, an administrator must explicitly check the \"Activate username editing\" box. This two-step process ensures that every username change is intentional.<\/p>\n\n<p><strong>Key Features:<\/strong>\n*   <strong>Safe Username Editing:<\/strong> Prevents accidental edits by requiring an activation checkbox to be checked.\n*   <strong>User-Friendly Interface:<\/strong> Integrates seamlessly into the WordPress user profile and user edit screens.\n*   <strong>Dynamic Help Text:<\/strong> The description below the username field updates dynamically to inform the admin whether editing is enabled or protected.\n*   <strong>Settings Page:<\/strong> Includes a dedicated settings page under \"Settings &gt; Username Edit\" with plugin information, usage instructions, and a link to support future development.\n*   <strong>Secure and Compliant:<\/strong> Follows WordPress best practices, including the use of nonces, proper permission checks, and a consistent text domain for internationalization.<\/p>\n\n<p>This plugin is ideal for site managers who need the flexibility to correct username typos or update usernames upon user request, without compromising on safety.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>allow-username-edit<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory on your server.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in your WordPress admin area.<\/li>\n<li>(Optional) Visit \"Settings &gt; Username Edit\" to view plugin information and support options.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='how%20does%20the%20username%20protection%20work%3F'><h3>How does the username protection work?<\/h3><\/dt>\n<dd><p>The plugin makes the username input field \"read-only\" by default. To edit the username, you must first check the \"Activate username editing\" checkbox above the username field. This prevents accidental changes.<\/p><\/dd>\n<dt id='can%20i%20use%20email%20addresses%20as%20usernames%3F'><h3>Can I use email addresses as usernames?<\/h3><\/dt>\n<dd><p>No. For security reasons, the plugin prevents usernames that contain the \"@\" symbol or resemble email addresses. If you try to enter an email-like username, you will see a warning and the change will be blocked.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7 - 2025-10-01<\/h4>\n\n<ul>\n<li><strong>Security:<\/strong> Improved security by centralizing permission and nonce checks in a helper function.<\/li>\n<li><strong>Security:<\/strong> Added validation to prevent email-like usernames containing \"@\" symbol with error message.<\/li>\n<li><strong>Enhancement:<\/strong> Added real-time warning when typing \"@\" in username field to discourage email usage.<\/li>\n<li><strong>Enhancement:<\/strong> Ensured nonce verification and current_user_can() checks are consistent and not bypassable.<\/li>\n<li><strong>Internationalization:<\/strong> Added all labels and warning texts to translation template for full i18n support.<\/li>\n<li><strong>Refactor:<\/strong> Updated validation and update functions to use centralized checks.<\/li>\n<li><strong>Maintenance:<\/strong> Refactored code for better maintainability and security.<\/li>\n<\/ul>\n\n<h4>1.0.6 - 2025-09-30<\/h4>\n\n<ul>\n<li><strong>Security:<\/strong> Enhanced nonce verification and input sanitization across all user input handling functions.<\/li>\n<li><strong>Fix:<\/strong> Resolved username saving issue by implementing direct database update with proper validation.<\/li>\n<li><strong>Fix:<\/strong> Prevented infinite recursion in username update function using static flag.<\/li>\n<\/ul>\n\n<h4>1.0.5 - 2025-09-29<\/h4>\n\n<ul>\n<li><strong>Tweak:<\/strong> Corrected plugin asset structure and removed inaccurate screenshot references from readme.txt to adhere to WordPress.org standards.<\/li>\n<\/ul>\n\n<h4>1.0.4 - 2025-09-28<\/h4>\n\n<ul>\n<li><strong>Fix:<\/strong> Refactored code to remove heredoc syntax, adhering to stricter WordPress coding standards.<\/li>\n<\/ul>\n\n<h4>1.0.3 - 2025-09-27<\/h4>\n\n<ul>\n<li><strong>Fix:<\/strong> Corrected all internationalization (i18n) function calls to include a consistent text domain (<code>allow-username-edit<\/code>) as required by WordPress standards.<\/li>\n<li><strong>Tweak:<\/strong> Standardized the <code>Text Domain<\/code> in the plugin header to <code>allow-username-edit<\/code> for consistency.<\/li>\n<\/ul>\n\n<h4>1.0.2 - 2025-09-26<\/h4>\n\n<ul>\n<li><strong>Fix:<\/strong> Reworked the checkbox injection logic to use a more reliable <code>admin_footer<\/code> hook and JavaScript DOM manipulation.<\/li>\n<\/ul>\n\n<h4>1.0.1 - 2025-09-25<\/h4>\n\n<ul>\n<li><strong>Fix:<\/strong> Corrected a fatal PHP syntax error.<\/li>\n<\/ul>\n\n<h4>1.0.0 - 2025-09-24<\/h4>\n\n<ul>\n<li><strong>Feature:<\/strong> Added a checkbox to activate\/deactivate username editing.<\/li>\n<li><strong>Feature:<\/strong> Added a settings page with a PayPal donate link.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial stable version.<\/li>\n<\/ul>","raw_excerpt":"A WordPress plugin that allows administrators to safely edit usernames of registered users with an activation checkbox to prevent accidental changes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/252429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=252429"}],"author":[{"embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/thaxam"}],"wp:attachment":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=252429"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=252429"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=252429"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=252429"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=252429"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=252429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}