Cara menggunakan email yang sama untuk banyak pengguna

14

Saya memiliki multisite yang sangat besar. Dan saya mendapat permintaan untuk mengaktifkan opsi agar banyak pengguna dapat menggunakan email yang sama. Saya menemukan plugin "Izinkan Banyak Akun" yang tidak berfungsi dengan baik. Saya harus mencari solusi lain untuk itu. Saya tahu bahwa saya bisa menggunakan sesuatu seperti menambahkan + sesuatu ke setiap email, sehingga akan berbeda dengan Wordpress. Apakah Anda punya solusi lain, yang bisa dilakukan di sini?

Boban
sumber
5
Anda harus berhati-hati dengan ini. Jika Anda berhasil dan jika Anda mencoba menggunakan email yang sama untuk beberapa individu yang berbeda maka salah satu dari orang-orang itu akan dapat mengatur ulang kata sandi untuk salah satu atau semua akun yang menggunakan email yang dibagikan. Alamat email itu adalah bagian dari sistem keamanan.
s_ha_dum
ya, saya tahu itu, tetapi saya masih mencari solusi ini
Boban
1
Jawaban Parham rapi, tetapi saya juga ingin menunjukkan bahwa alamat email tidak harus asli, sehingga Anda dapat membuat akun dengan alamat email palsu. Pengguna dapat masuk dan mengubahnya nanti jika mereka mau. Ini memiliki keuntungan dari segi keamanan, dan mencegah masalah dengan plugin dan bagian-bagian inti WordPress yang menganggap ada satu nama pengguna per alamat email.
wp-overwatch.com
Persis seperti yang kubutuhkan, Tuan Me. Saya hanya ingin itu untuk tujuan pengujian.
LegendLength

Jawaban:

15

Anda dapat menggunakan wpmu_validate_user_signupfilter untuk menghapus kesalahan dan kemudian menentukan WP_IMPORTINGhanya untuk melewati fungsi email_exist()check-in 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;
}

UPDATE : untuk pengaturan non-situs coba kode ini:

add_filter('pre_user_email', 'skip_email_exist');
function skip_email_exist($user_email){
    define( 'WP_IMPORTING', 'SKIP_EMAIL_EXIST' );
    return $user_email;
}
Parham
sumber
Saya pikir ini adalah jawaban yang tepat. Ditandai sebagai benar. Terima kasih!
Boban
1
Ini tidak berfungsi di Wordpress 3.5.
Guillochon
@Guillochon Saya tidak melihat perubahan pada WP 3.5 yang akan membuat kode ini tidak berfungsi. Dan ini untuk pengaturan MULTI-SITE, apakah Anda menguji pada pengaturan WP MU?
Parham
Kesalahan saya, saya sedang mencoba untuk setup situs tunggal. Plugin "Beberapa Akun" untuk satu situs tidak berfungsi lagi, jadi saya mencari alternatif.
Guillochon
1
Apa yang terjadi dengan pemberitahuan kata sandi yang hilang pada pengaturan multisite? Bagaimana ini akan ditangani?
Tiny Giant Studios