Plugin Directory

Test out the new Plugin Directory and let us know what you think.

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 wp.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.12
Last Updated: 2 years ago
Active Installs: 9,000+


4.9 out of 5 stars


1 of 3 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