{"id":227832,"date":"2025-04-10T07:18:32","date_gmt":"2025-04-10T07:18:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/multisite-user-registration-fix\/"},"modified":"2025-04-10T07:26:44","modified_gmt":"2025-04-10T07:26:44","slug":"multisite-user-registration-fix","status":"publish","type":"plugin","link":"https:\/\/de-at.wordpress.org\/plugins\/multisite-user-registration-fix\/","author":23262491,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"3.1.4","stable_tag":"3.1.4","tested":"6.7.5","requires":"5.6","requires_php":"","requires_plugins":null,"header_name":"Multisite User Registration Fix","header_author":"Nick de Wit & QuantumGPT","header_description":"Laat gebruikers zich met hetzelfde e-mailadres registreren op meerdere subsites in een WordPress Multisite en vervangt alleen de standaard \"login details\" e-mail voor nieuwe gebruikers. Biedt ook roltoewijzing per subsite.","assets_banners_color":"","last_updated":"2025-04-10 07:26:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":479,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"3.1.4":{"tag":"3.1.4","author":"nickdewit","date":"2025-04-10 07:26:44"}},"upgrade_notice":{"2.1":"<p>Recommended upgrade: introduces per-subsite role selection and improved control from the network settings page.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["3.1.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Role assignment settings per subsite (Network Admin)","2":"Example confirmation email","3":"User shown with different roles on multiple subsites"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[99,441,240611,240610,5134],"plugin_category":[48,51],"plugin_contributors":[240612],"plugin_business_model":[],"class_list":["post-227832","plugin","type-plugin","status-publish","hentry","plugin_tags-multilingual","plugin_tags-multisite","plugin_tags-same-email","plugin_tags-subsite-roles","plugin_tags-user-registration","plugin_category-language-tools","plugin_category-multisite","plugin_contributors-nickdewit","plugin_committers-nickdewit"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/multisite-user-registration-fix.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Enable smart user registration across your WordPress Multisite network \u2013 allow users with an existing account to register on other subsites using the same email, with subsite-specific role assignment. Fully translation-ready!<\/strong><\/p>\n\n<p>By default, WordPress Multisite prevents new user registrations if the email address already exists anywhere in the network. This is a major issue for platforms where each subsite functions as a separate entity \u2013 such as coach directories, SaaS portals, multilingual communities, or franchise networks.<\/p>\n\n<p>Multisite User Registration Fix lifts this restriction by:\n- Detecting if a registering user's email already exists in the network\n- Automatically assigning them to the current subsite with a role you define\n- Letting you manage roles <em>per subsite<\/em> from one central network admin screen\n- Sending a confirmation email when users are added to new subsites\n- Preventing registration errors due to duplicate email conflicts\n- Supporting full translation and multilingual setup (via .pot, WPML, Loco Translate, Poedit)<\/p>\n\n<p>Works perfectly with booking and membership plugins like Amelia, MemberPress, WooCommerce, and more.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>\ud83d\udc1e Optional debug logging for admins (toggle via settings page, plugin.org-safe)<\/li>\n<li>\u2705 Seamless cross-subsite user registration using the same email<\/li>\n<li>\ud83d\udee0\ufe0f Centralized role assignment per subsite (via Network Admin)<\/li>\n<li>\u2709\ufe0f Sends email confirmation upon successful subsite assignment<\/li>\n<li>\ud83e\udde9 MU-plugin compatible \u2013 works automatically when dropped into <code>mu-plugins<\/code><\/li>\n<li>\ud83d\udca1 Supports standard WordPress registration, custom booking flows, and third-party plugins<\/li>\n<li>\ud83c\udf10 Fully translation-ready \u2013 includes .pot file and supports multilingual WordPress networks<\/li>\n<\/ul>\n\n<h3>Notes<\/h3>\n\n<p>Ideal for multisite setups where users should be able to register on multiple subsites with the same email \u2013 but require different roles and access levels per site. Created for platforms like coach directories, multilingual networks, e-learning portals, SaaS systems, and more.<\/p>\n\n<p>Plugin developed by the team at https:\/\/detransformatietafel.nl \u2728<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload this plugin to <code>\/wp-content\/mu-plugins\/<\/code> for must-use behavior, or to <code>\/plugins\/<\/code> for standard usage<\/li>\n<li>Go to <strong>Network Admin \u2192 Settings \u2192 Multisite User Fix<\/strong><\/li>\n<li>For each subsite, select the default role for existing users who join via registration<\/li>\n<li>You're done! Users can now join multiple subsites with the same email address, with different roles<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='can%20i%20assign%20different%20roles%20per%20subsite%3F'><h3>Can I assign different roles per subsite?<\/h3><\/dt>\n<dd><p>Yes! The network admin settings page lets you assign a different default role for each subsite in your network.<\/p><\/dd>\n<dt id='what%20happens%20when%20a%20user%20registers%20with%20an%20existing%20email%3F'><h3>What happens when a user registers with an existing email?<\/h3><\/dt>\n<dd><p>They are automatically added to the current subsite with the role you\u2019ve configured. No duplicate accounts are created.<\/p><\/dd>\n<dt id='will%20this%20work%20with%20plugins%20like%20amelia%20or%20memberpress%3F'><h3>Will this work with plugins like Amelia or MemberPress?<\/h3><\/dt>\n<dd><p>Absolutely. This plugin is designed to support booking and membership flows that rely on user registration.<\/p><\/dd>\n<dt id='is%20this%20plugin%20translation-ready%3F'><h3>Is this plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes! The plugin includes a <code>.pot<\/code> file and uses WordPress internationalization functions throughout. Fully compatible with Loco Translate, WPML, Poedit, and Translate WordPress.org.<\/p><\/dd>\n<dt id='can%20this%20be%20used%20as%20a%20regular%20plugin%2C%20not%20mu%3F'><h3>Can this be used as a regular plugin, not MU?<\/h3><\/dt>\n<dd><p>Yes \u2013 although we recommend using it as a MU-plugin for reliability and consistent behavior across the network.<\/p><\/dd>\n<dt id='what%20if%20i%20don%E2%80%99t%20configure%20a%20role%20for%20a%20subsite%3F'><h3>What if I don\u2019t configure a role for a subsite?<\/h3><\/dt>\n<dd><p>Users will default to the 'subscriber' role if no custom role is set.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1.4<\/h4>\n\n<ul>\n<li>Fix: Removed duplicate admin menus and unified settings page<\/li>\n<li>Fix: Replaced all legacy or generic prefixes with <code>multusre_<\/code> to avoid naming collisions<\/li>\n<li>Fix: Debug logging now uses unique action <code>multusre_debug_log<\/code> for WP.org compliance<\/li>\n<li>Fix: Corrected use of <code>wp_new_user_notification<\/code> override function<\/li>\n<li>Improvement: Code structure now fully matches WP Plugin Guidelines<\/li>\n<li>Cleanup: Removed outdated legacy references to <code>murflog<\/code>\/<code>murf_*<\/code><\/li>\n<li>Ready for review &amp; release on WordPress.org \ud83c\udf89<\/li>\n<\/ul>\n\n<h4>3.1.2<\/h4>\n\n<ul>\n<li>New: Optional debug logging, toggleable via admin settings (safe for WordPress.org plugin review)<\/li>\n<li>New: All internal debug calls now routed via <code>murflog()<\/code> helper<\/li>\n<li>Fix: Moved plugin headers to the top of the file for proper recognition<\/li>\n<li>Improvement: Fully passed WP.org Plugin Checker \u2705<\/li>\n<\/ul>\n\n<h4>2.9.2<\/h4>\n\n<ul>\n<li>New: Dynamic email subject line for new user registration emails<\/li>\n<li>New: Option to send emails in HTML format<\/li>\n<li>New: Full placeholder support for email content, with inline guidance<\/li>\n<li>New: Extra placeholders added such as %displayname%, %blogname%, %siteurl%, %username%, %email%, %loginlink%<\/li>\n<li>New: Conditional logic to distinguish between brand new users and existing network users (activation vs. welcome email)<\/li>\n<li>New: More accurate detection of truly new users (not yet in wp_users or only tied to other subsites)<\/li>\n<li>New: Secure fallback logic and edge-case protection to prevent misclassification<\/li>\n<li>Improvement: Code cleanup and more structured logic<\/li>\n<li>Improvement: UI\/UX enhancements to the settings panel<\/li>\n<li>Fix: Deleted users were sometimes misclassified as existing \u2013 resolved<\/li>\n<li>Fix: Missing or malformed activation links \u2013 resolved<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>NEW: Assign different roles per subsite via network admin<\/li>\n<li>Added: Settings screen with role dropdowns<\/li>\n<li>Improved: Role sanitization and compatibility<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Centralized (global) role setting for all subsites<\/li>\n<li>Compatibility improvements<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release: auto-link existing users to subsites based on email<\/li>\n<\/ul>","raw_excerpt":"Enable smart user registration across your WordPress Multisite network \u2013 allow users with an existing account to register on other subsites using the  &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/227832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=227832"}],"author":[{"embeddable":true,"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nickdewit"}],"wp:attachment":[{"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=227832"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=227832"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=227832"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=227832"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=227832"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/de-at.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=227832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}