Как использовать один email для нескольких пользователей
У меня очень большая мультисайтовая установка. И мне поступил запрос включить возможность, чтобы несколько пользователей могли использовать один и тот же email. Я нашел плагин "Allow Multiple Accounts", который не работает должным образом. Мне нужно найти какое-то другое решение для этой задачи. Я знаю, что можно использовать что-то вроде добавления +текст к каждому email, чтобы WordPress воспринимал их как разные. Есть ли у вас другие решения, которые можно здесь применить?

Вы можете использовать фильтр wpmu_validate_user_signup
для удаления ошибки и затем определить константу WP_IMPORTING
, чтобы пропустить проверку email_exist()
в функции wp_insert_user()
:
add_filter('wpmu_validate_user_signup', 'skip_email_exist');
function skip_email_exist($result){
if(isset($result['errors']->errors['user_email']) && ($key = array_search(__('Извините, этот email уже используется!'), $result['errors']->errors['user_email'])) !== false) {
unset($result['errors']->errors['user_email'][$key]);
if (empty($result['errors']->errors['user_email'])) unset($result['errors']->errors['user_email']);
}
define( 'WP_IMPORTING', 'SKIP_EMAIL_EXIST' );
return $result;
}
ОБНОВЛЕНИЕ: для настройки без Multi-site попробуйте этот код:
add_filter('pre_user_email', 'skip_email_exist');
function skip_email_exist($user_email){
define( 'WP_IMPORTING', 'SKIP_EMAIL_EXIST' );
return $user_email;
}

@Guillochon Я не вижу изменений в WP 3.5, которые могли бы привести к неработоспособности этого кода. И это для MULTI-SITE настройки, вы тестируете на WP MU установке?

Моя ошибка, я пытался настроить для одного сайта. Плагин "Multiple Accounts" для одиночных сайтов больше не работает, поэтому я искал альтернативы.

@Guillochon Попробуйте мое обновленное решение выше для настройки одиночного сайта.

Что происходит с уведомлениями о сбросе пароля в мультисайтовых настройках? Как это будет обрабатываться?

@Tiny Giant Studios Я только что провел тест с двумя аккаунтами, использующими один и тот же email. Когда я запросил восстановление пароля по email, пришло только одно сообщение для первого созданного аккаунта. В этом случае лучше использовать имя пользователя для сброса пароля.

Вы можете использовать функцию псевдонимов в Gmail:
- Первая учетная запись WordPress: email+1@gmail.com
- Вторая учетная запись WordPress: email+2@gmail.com
- Третья учетная запись WordPress: email+3@gmail.com
и так далее.
Все письма будут приходить на один адрес (email@gmail.com).
В Gmail вы можете различать письма с помощью фильтров или поиска.
Например, поиск по запросу to:email+1@gmail.com
покажет только письма, связанные с первой учетной записью WordPress.
Это решение не должно нарушать процесс "Сброса пароля" в WordPress.
