Comment utiliser le même e-mail pour plusieurs utilisateurs

14

J'ai un très grand multisite. Et j'ai reçu une demande pour activer l'option permettant à plusieurs utilisateurs d'utiliser le même e-mail. J'ai trouvé un plugin "Autoriser plusieurs comptes" qui ne fonctionne pas correctement. Je devrais trouver une autre solution pour cela. Je sais que je pourrais utiliser quelque chose comme ajouter + quelque chose à chaque e-mail, donc cela sera différent de Wordpress. Avez-vous une autre solution, qui peut être faite ici?

Boban
la source
5
Vous devez être prudent avec cela. Si vous avez réussi et que vous essayez d'utiliser le même e-mail pour plusieurs personnes distinctes, l'une de ces personnes pourrait réinitialiser le mot de passe pour tout ou partie des comptes qui utilisent l'e-mail partagé. Cette adresse e-mail fait partie du système de sécurité.
s_ha_dum
oui, je le sais, mais je suis toujours à la recherche de cette solution
Boban
1
La réponse de Parham est plutôt jolie, mais je voudrais également souligner que les adresses e-mail n'ont pas à être réelles, vous pouvez donc créer des comptes avec de fausses adresses e-mail. L'utilisateur peut entrer et le modifier plus tard s'il le souhaite. Cela présente des avantages en termes de sécurité et évite les problèmes avec les plugins et les parties du noyau WordPress qui supposent qu'il y a un nom d'utilisateur par adresse e-mail.
wp-overwatch.com
Exactement ce dont j'avais besoin Mr Me. Je le veux juste à des fins de test.
LegendLength

Réponses:

15

Vous pouvez utiliser le wpmu_validate_user_signupfiltre pour éliminer l'erreur et définir ensuite WP_IMPORTINGjuste pour sauter le email_exist()contrôle en wp_insert_user()fonction:

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

MISE À JOUR : pour une configuration non multisite, essayez ce code:

add_filter('pre_user_email', 'skip_email_exist');
function skip_email_exist($user_email){
    define( 'WP_IMPORTING', 'SKIP_EMAIL_EXIST' );
    return $user_email;
}
Parham
la source
Je pense que c'est la bonne réponse. Marqué comme correct. Merci!
Boban
1
Cela ne fonctionne pas dans Wordpress 3.5.
Guillochon
@Guillochon Je ne vois aucun changement dans WP 3.5 qui empêcherait ce code de fonctionner. Et ceci est pour une configuration MULTI-SITE, testez-vous sur une configuration WP MU?
Parham
Mon erreur, j'essayais pour une configuration de site unique. Le plugin "Multiple Accounts" pour les sites uniques ne fonctionne plus, donc je cherchais des alternatives.
Guillochon
1
Que se passe-t-il avec les notifications de mot de passe perdu sur les configurations multisites? Comment cela sera-t-il géré?
Tiny Giant Studios