Как обойти ошибку "этот email адрес уже используется"?
Следующая ошибка может возникнуть, если предыдущая регистрация остается в ожидании с конфликтующим email адресом.
Этот email адрес уже используется. Пожалуйста, проверьте вашу почту на наличие письма для активации. Адрес станет доступным через несколько дней, если вы ничего не предпримете.
Связанная с этим ошибка имени пользователя выглядит следующим образом.
Это имя пользователя в настоящее время зарезервировано, но может стать доступным через несколько дней.

Когда я добавляю нового пользователя с другим email-адресом, появляется сообщение об ошибке: Это имя пользователя в настоящее время зарезервировано, но может стать доступным через пару дней.
В моём случае я удалил строку из базы данных в таблице wp_signups, где user_login соответствовал имени пользователя. По сути:
delete from wp_signups where user_login = 'abc';
После этого я смог повторно добавить пользователя.
Дополнение от @aubreypwd: Кроме того, администраторы (только сетевые администраторы в MU или сетевой установке) имеют возможность добавлять пользователей без отправки email. Если вы отметите эту опцию, это позволит избежать данного процесса.

- Войдите в систему как администратор WordPress
- Перейдите к добавлению нового пользователя
- Установите флажок для обхода подтверждения по электронной почте
- Добавьте пользователя с другим адресом электронной почты
- Измените адрес электронной почты пользователя на желаемый
Для решения проблемы с похожим именем пользователя см. Как снять резервирование ожидающего регистрации имени пользователя?
Период ожидания составляет 2 дня после возникновения конфликта, а также существуют тикеты в Trac для уточнения этого процесса: здесь и здесь.

Для обхода ошибки "этот адрес электронной почты уже используется" мы можем создать плагин, который эффективно пропускает проверку. Плагин будет работать в три этапа, используя три различных хука.
pre_user_login
фильтрует имя пользователя после его очистки. Мы будем использовать этот хук для получения пользователя, особенно нас интересует его email.
pre_user_email
фильтрует email пользователя перед его созданием или обновлением. Мы будем использовать этот хук для изменения email на случайные символы.
user_register
срабатывает сразу после регистрации нового пользователя. Мы будем использовать этот хук для ручного обновления email пользователя после его регистрации.
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' ]
) );
}
//* Код немного изменён по сравнению с 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 );
}
}

Существует полезный плагин под названием "User Activation Keys", который добавляет пункт меню в интерфейс управления пользователями сети:
https://wordpress.org/plugins/user-activation-keys/
Он позволяет редактировать/удалять/подтверждать запросы на активацию пользователей и, соответственно, зарезервированные адреса электронной почты/имена пользователей.

Если вам удобно работать напрямую с MySQL и вы не хотите писать код или устанавливать плагин только для этой задачи, вы можете довольно просто решить эту проблему.
В базе данных MySQL вашего сайта будет таблица с именем { $wpdb->prefix }_signups
, где $wpdb->prefix
— это префикс, который вы настроили для использования в таблицах базы данных WordPress. (По умолчанию это wp_
.)
Запросите эту таблицу по адресу электронной почты, который заблокирован, чтобы найти запись о регистрации:
SELECT * FROM {$wpdb->prefix}_signups WHERE user_email = '{ email address }';
Это вернет запись о попытке регистрации для этого адреса электронной почты. Затем просто УДАЛИТЕ эту запись из таблицы, и всё готово.

Используйте плагин Unconfirmed.
Unconfirmed создаёт панель в разделе Пользователи (Сеть Администраторов > Пользователи в мультисайте), которая показывает список неактивированных регистраций пользователей. Для каждой регистрации у вас есть возможность повторно отправить письмо с активацией или вручную активировать пользователя.
