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


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.