The following error may occur if a previous registration remains pending with a conflicting email address.

That email address has already been used. Please check your inbox for an activation email. It will become available in a couple of days if you do nothing.

The related username error looks like the following.

That username is currently reserved but may be available in a couple of days.

  1. Login as WordPress administrator
  2. Navigate to add a new user
  3. Check box to bypass email confirmation
  4. Add the user with a different email address
  5. Edit the user's email address to the desired result

For the similar username error, see How can I un-reserve a pending username registration?

The timeout period is 2 days following a conflict, and trac tickets to clarify this process currently exist here and here.

To work around the "that email address has already been used" error, we can create a plugin that effectively bypasses the check. The plugin will work in three parts, utilizing three different hooks.

pre_user_login filters a username after it has been sanitized. We'll use this hook to grab the user, of particular interest is the email.

pre_user_email filters a user’s email before the user is created or updated. We'll use this hook to modify the email to some random characters.

user_register fires immediately after a new user is registered. We'll use this hook to manually update the user email after the user is registered.

add_filter( 'pre_user_email', [ new wpse_212671(), 'pre_user_login' ] );
class wpse_212671 {
  protected $user;
  public function pre_user_login( $user ) {
    $this->user = $user;
    if( isset( $user[ 'ID' ] ) || ! get_user_by( 'email', $user[ 'user_email' ] ) {
      return $user;
    }
    add_filter( 'pre_user_email', [ $this, 'pre_user_email' ] );
    add_action( 'user_register',  [ $this, 'user_register' ] );
  }
  public function pre_user_email( $email ) {
    return $this->generate_random_string();
  }
  public function user_register( $user_id ) {
    global $wpdb;
    $table = $wpdb->prefix . 'users';
    $wpdb->query( $wpdb->prepare(
      "UPDATE %s 
      SET user_email = %s
      WHERE user_login = %s", 
      $table,
      $this->user[ 'user_email' ], 
      $this->user[ 'user_login' ]
    ) );
  }
  //* Code slightly modified from http://stackoverflow.com/a/13212994/6077935
  protected function generate_random_string( $length = 40 ) {
    return substr( str_shuffle( str_repeat( 
      $x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
      ceil( $length / strlen( $x ) )
    ) ), 1, $length );
  }
}
  • So will this allow me to remove a user completely without having to go into the DB and manually remove the users from wp_signups? – Weird Mike Jun 4 '17 at 20:46

When I add a new user with a different email address, I get the error message: That username is currently reserved but may be available in a couple of days.

For me, I removed the row from the database in the table wp_signups where user_login equaled the username. Essentially:

delete from wp_signups where user_login = 'abc';

Then I was able to re-add the user.

There is a useful plugin called "User Activation Keys" which adds a menu item to the Network Users interface:

https://wordpress.org/plugins/user-activation-keys/

This allows for editing/deleting/approving user activation requests and subsequently reserved email addresses/usernames.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.