Plugin Directory

Allow Multiple Accounts

Allow multiple user accounts to be created, registered, and updated having the same email address.

3.0.4 (2015-07-14)

  • Change: Don't attempt to remap (even if only briefly) the email address for user updates when the email address hasn't been changed

3.0.3 (2015-07-09)

  • Bugfix: Hook 'profile_update' and 'user_register' at higher priority to avoid conflicting with other plugins (e.g. MailPoet, MailPress)
  • Update: Hook 'pre_user_email' and 'pre_user_login' at lower priority to avoid potentially conflicting with other plugins
  • Update: Remap user email more precisely using user ID instead of email (though no problems noted with the old approach)

3.0.2 (2015-04-16)

  • Bugfix: compatibility fix for versions of WP older than 4.1; $error->remove() was introduced in 4.1
  • Update: Note compatibility through WP 4.2+

3.0.1 (2015-04-10)

  • Bugfix: add omitted code to count_multiple_accounts() to account for $user_id arg potentially being an object

3.0 (2015-03-26)

  • Reimplement necessary workaround to WP's shortcoming in facilitating repeated use of email addresses
  • Fix outdated error handling
  • Fix has_exceeded_limit() to account for 'account_limit' not being set and 'allow_for_everyone' being false
  • Fix has_exceeded_limit() to account for 'account_limit' not being set and 'allow_for_everyone' being true
  • Omit listing email addresses associated with only 1 account on the settings page "Email Addresses with Multiple User Accounts" listing
  • Add new hack functions: hack_pre_user_login(), hack_pre_user_login(), hack_restore_remapped_email_address()
  • Remove long deprecated functions: count_multiple_accounts(), get_users_by_email(), has_multiple_accounts()
  • Remove no longer needed hack functions:
    • get_user_by_email()
    • get_user_by()
    • display_activation_notice()
    • hack_check_passwords()
    • hack_pre_user_display_name()
  • Remove no longer needed hack class variables: during_user_creation, controls_get_user_by
  • Add new hack class variables: hack_user, hack_remapped_emails
  • Indent user listings in table on settings page to indicate they are being listed according to email address
  • Update plugin framework to 039
  • Change default input type for 'account_limit' setting from 'text' to 'int'
  • Better singleton implementation:
    • Add get_instance() static method for returning/creating singleton instance
    • Make static variable 'instance' private
    • Make constructor protected
    • Make class final
    • Additional related changes in plugin framework (protected constructor, erroring __clone() and __wakeup())
  • Add unit tests
  • Explicitly declare activation() and uninstall() static
  • Add checks to prevent execution of code if file is directly accessed
  • Change use of "e-mail" to "email"
  • Re-license as GPLv2 or later (from X11)
  • Reformat plugin header
  • Add 'License' and 'License URI' header tags to readme.txt and plugin file
  • Use explicit path for require_once()
  • Discontinue use of PHP4-style constructor
  • Discontinue use of explicit pass-by-reference for objects
  • Remove ending PHP close tag
  • Documentation improvements (inline and readme)
  • Minor code reformatting (spacing, bracing)
  • Change documentation links to w.org to be https
  • Note compatibility through WP 4.1+
  • Drop compatibility with version of WP older than 3.6
  • Update copyright date (2015)
  • Regenerate .pot
  • Change donate link
  • Add assets directory to plugin repository checkout
  • Update screenshots
  • Add third screenshot
  • Move screenshots into repo's assets directory
  • Add banner
  • Add icon


  • Fix for WP 3.2.x to prevent warning notice unnecessarily appearing in admin


  • Fix for WP 3.2.x (need to override get_user_by_email() again instead of get_user_by() - but just for WP < 3.3)


  • Add/fix multisite support
  • Remove get_user_by_email() override function
  • Override get_user_by() to circumvent check for email existence
  • Show admin notice if unable to override get_user_by()
  • Update plugin framework to 033
  • Remove support for 'c2c_allow_multiple_accounts' global
  • Note compatibility through WP 3.3+
  • Change parent constructor invocation
  • Create 'lang' subdirectory and move .pot file into it
  • Regenerate .pot
  • Add more FAQs
  • Minor phpDoc reformatting
  • Add 'Domain Path' directive to top of main plugin file
  • Add link to plugin directory page to readme.txt
  • Tweak installation instructions in readme.txt
  • Update screenshots for WP 3.3
  • Update copyright date (2012)


  • Fix user listing error by adapting older user_row() into class function
  • Add support for BuddyPress
  • Add bp_members_validate_user_signup()
  • Fix has_exceeded_limit() to account for the account_limit applying to certain emails and not everyone
  • Fix to properly register activation and uninstall hooks
  • Add filters 'c2c_count_multiple_accounts', 'c2c_get_users_by_email', and 'c2c_has_multiple_accounts' to respond to the function of the same name so that users can use the apply_filters() notation for invoking template tags
  • Use get_users() rather than direct query
  • Remove Posts (which provided count of posts) from multi-account user listing table
  • Update plugin framework to 023
  • Save a static version of itself in class variable $instance
  • Deprecate use of global variable $c2c_allow_multiple_accounts to store instance
  • In global space functions: use new class instance variable to access instance instead of using global
  • Rename class from 'AllowMultipleAccounts' to 'c2c_AllowMultipleAccounts'
  • Add __construct(), activation(), uninstall()
  • Note compatibility through WP 3.2+
  • Drop support for versions of WP older than 3.1
  • Add more FAQ questions
  • Call _deprecated_function() on deprecated functions to generate proper notices/warnings
  • Add filters section to readme.txt and document filters
  • Explicitly declare functions public
  • Minor code formatting changes (spacing)
  • Update copyright date (2011)
  • Add plugin homepage and author links in description in readme.txt


  • Update plugin framework to C2C_Plugin_016 (fixes WP 2.9.2 compatibility issues)


  • Fix compatibility with MU/Multi-site
  • Fix bug preventing admins from editing the profile of an account
  • Re-implementation by extending C2C_Plugin_011, which among other things adds support for:
    • Reset of options to default values
    • Better sanitization of input values
    • Offload of core/basic functionality to generic plugin framework
    • Additional hooks for various stages/places of plugin operation
    • Easier localization support
  • Full localization support
  • Move count_multiple_accounts() to c2c_count_multiple_accounts()
  • Deprecate count_multiple_accounts(), but retain it (for now) for backwards compatibility
  • Move get_users_by_email() to c2c_get_users_by_email()
  • Deprecate get_users_by_email(), but retain it (for now) for backwards compatibility
  • Move has_multiple_accounts() to c2c_has_multiple_accounts()
  • Deprecate has_multiple_accounts(), but retain it (for now) for backwards compatibility
  • Rename global instance variable from allow_multiple_accounts to c2c_allow_multiple_accounts
  • Explicitly ensure $allow_multiple_accounts is global when instantiating plugin object
  • Note compatibility with WP 3.0+
  • Add 'Text Domain' header tag
  • Add omitted word in string
  • Minor string variable formatting changes
  • Update .pot file
  • Minor code reformatting (spacing)
  • Add PHPDoc documentation
  • Add package info to top of plugin file
  • Remove docs from top of plugin file (all that and more are in readme.txt)
  • Remove trailing whitespace in header docs
  • Add Template Tags and Upgrade Notice sections to readme.txt


  • Fixed bug causing 'Too many accounts...' error to be incorrectly triggered
  • For retrieve password request emails, if the account is one associated with multiple accounts, list those account names in the email for informational purposes
  • Added class functions: count_multiple_emails(), get_users_by_email(), has_multiple_emails()
  • Exposed new class functions for external use via globally defined functions: count_multiple_emails(), get_users_by_email(), has_multiple_emails()
  • Changed invocation of plugin's install function to action hooked in constructor rather than in global space
  • Update object's option buffer after saving changed submitted by user
  • Finalized full support for localization
  • Parameterized textdomain name
  • Used _n() instead of deprecated __ngettext()
  • Supported swappable arguments in translatable string
  • Miscellaneous tweaks to update plugin to my current plugin conventions
  • Noted compatibility with WP2.9.1
  • Dropped compatibility with versions of WP older than 2.8


  • Added handling for admin creation of users for WP2.8
  • Improved query
  • Changed permission check
  • More localization-related work
  • Removed hardcoded path
  • Noted WP2.8 compatibility


  • Initial release

Requires: 3.6 or higher
Compatible up to: 4.2.9
Last Updated: 1 year ago
Active Installs: 7,000+


4.9 out of 5 stars


0 of 2 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

0,1,0 100,4,4 100,1,1
0,4,0 100,1,1
0,3,0 100,1,1 67,3,2
0,1,0 100,1,1
33,3,1 100,1,1