So verwenden Sie dieselbe E-Mail für mehrere Benutzer

14

Ich habe eine sehr große Multisite. Und ich habe die Bitte erhalten, die Option zu aktivieren, dass mehrere Benutzer dieselbe E-Mail verwenden können. Ich habe ein Plugin "Allow Multiple Accounts" gefunden, das nicht richtig funktioniert. Ich sollte eine andere Lösung dafür finden. Ich weiß, dass ich so etwas wie das Hinzufügen von + sometext zu jeder E-Mail verwenden könnte, damit es anders als Wordpress angezeigt wird. Haben Sie eine andere Lösung, die hier durchgeführt werden kann?

Boban
quelle
5
Sie müssen damit vorsichtig sein. Wenn dies funktioniert und Sie versuchen, dieselbe E-Mail für mehrere unterschiedliche Personen zu verwenden, kann eine dieser Personen das Kennwort für eines oder alle Konten, die die gemeinsam genutzte E-Mail verwenden, zurücksetzen. Diese E-Mail-Adresse ist Teil des Sicherheitssystems.
s_ha_dum
Ja, das weiß ich, aber ich suche immer noch nach dieser Lösung
Boban
1
Parhams Antwort ist hübsch, aber ich möchte auch darauf hinweisen, dass die E-Mail-Adressen nicht echt sein müssen, damit Sie Konten mit gefälschten E-Mail-Adressen erstellen können. Der Benutzer kann später darauf zugreifen und es ändern, wenn er möchte. Dies hat sicherheitstechnische Vorteile und verhindert Probleme mit Plugins und Teilen des WordPress-Kerns, die davon ausgehen, dass es einen Benutzernamen pro E-Mail-Adresse gibt.
wp-overwatch.com
Genau das, was ich brauchte, Mr Me. Ich möchte es nur zu Testzwecken.
LegendLength

Antworten:

15

Sie können wpmu_validate_user_signupFilter verwenden, um den Fehler zu beseitigen, und anschließend festlegen WP_IMPORTING, dass die email_exist()Eincheckfunktion wp_insert_user()übersprungen werden soll:

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;
}

UPDATE : Versuchen Sie diesen Code für ein nicht standortübergreifendes Setup:

add_filter('pre_user_email', 'skip_email_exist');
function skip_email_exist($user_email){
    define( 'WP_IMPORTING', 'SKIP_EMAIL_EXIST' );
    return $user_email;
}
Parham
quelle
Ich denke das ist die richtige Antwort. Als korrekt markiert. Vielen Dank!
Boban
1
Dies funktioniert nicht in Wordpress 3.5.
Guillochon
@ Guillochon Ich sehe keine Änderung in WP 3.5, die dazu führen würde, dass dieser Code nicht funktioniert. Und dies ist für ein MULTI-SITE-Setup. Testen Sie es auf einem WP MU-Setup?
Parham
Mein Fehler: Ich habe versucht, eine einzelne Site einzurichten. Das Plugin "Mehrere Konten" für einzelne Sites funktioniert nicht mehr, daher habe ich nach Alternativen gesucht.
Guillochon
1
Was passiert mit Benachrichtigungen über verlorene Kennwörter bei Multisite-Setups? Wie wird damit umgegangen?
Tiny Giant Studios