Як використовувати одну і ту ж електронну пошту для кількох користувачів


14

У мене дуже великий мультисайт. І я отримав запит, щоб увімкнути опцію, щоб кілька користувачів могли використовувати один і той же електронний лист. Я знайшов плагін "Дозволити кілька облікових записів", який не працює належним чином. Я мушу розібратися з іншим рішенням для цього. Я знаю, що я можу використовувати щось на кшталт додавання + деякого тексту до кожної електронної пошти, тому це буде відображатися по-різному для Wordpress. Чи є у вас якесь інше рішення, яке можна зробити тут?


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, які б змусили цей код не працювати. І це для МУЛЬТИ-САЙТА, ​​ви тестуєте на налаштуваннях WP MU?
Пархам

Моя помилка, я намагався налаштувати єдиний сайт. Плагін "Кілька облікових записів" для окремих сайтів більше не працює, тому я шукав альтернативи.
Гільйохон

1
Що трапляється із сповіщеннями про втрачені паролі у налаштуваннях безлічі сайтів? Як це впорається?
Tiny Giant Studios
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.