Как использовать один и тот же адрес электронной почты для нескольких пользователей

14

У меня очень большой мультисайт. И я получил запрос на включение опции, что несколько пользователей могут использовать один и тот же адрес электронной почты. Я нашел плагин «Разрешить несколько учетных записей», который не работает должным образом. Я должен найти другое решение для этого. Я знаю, что я мог бы использовать что-то вроде добавления + sometext к каждому письму, поэтому оно будет отличаться от Wordpress. У вас есть какое-то другое решение, которое можно сделать здесь?

Boban
источник
5
Вы должны быть осторожны с этим. Если у вас это работает, и если вы пытаетесь использовать один и тот же адрес электронной почты для нескольких отдельных лиц, то любой из этих людей сможет сбросить пароль для любой или всех учетных записей, которые используют общую электронную почту. Этот адрес электронной почты является частью системы безопасности.
s_ha_dum
да, я знаю это, но я все еще ищу это решение
Бобан
1
Ответ Пархема довольно аккуратный, но я также хотел бы отметить, что адреса электронной почты не обязательно должны быть реальными, поэтому вы можете создавать учетные записи с поддельными адресами электронной почты. Пользователь может зайти и изменить его позже, если захочет. Это имеет преимущества с точки зрения безопасности и предотвращает проблемы с плагинами и частями ядра WordPress, которые предполагают наличие одного имени пользователя на один адрес электронной почты.
wp-overwatch.com
Именно то, что мне было нужно, мистер Я. Я просто хочу это для целей тестирования.
LegendLength

Ответы:

15

Вы можете использовать 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(__('Sorry, that email address is already used!'), $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;
}

ОБНОВЛЕНИЕ : для установки без мультисайта попробуйте этот код:

add_filter('pre_user_email', 'skip_email_exist');
function skip_email_exist($user_email){
    define( 'WP_IMPORTING', 'SKIP_EMAIL_EXIST' );
    return $user_email;
}
Пархам
источник
Я думаю, что это правильный ответ. Помечено как правильное. Благодарность!
Бобан
1
Это не работает в Wordpress 3.5.
Гильошон
@ Guillochon Я не вижу никаких изменений в WP 3.5, из-за которых этот код не работал бы. И это для установки MULTI-SITE, вы тестируете установку WP MU?
Пархам
Моя ошибка, я пытался настроить один сайт. Плагин «Несколько аккаунтов» для отдельных сайтов больше не работает, поэтому я искал альтернативы.
Гильошон
1
Что происходит с уведомлениями об утерянных паролях в многосайтовых установках? Как это будет обработано?
Tiny Giant Studios