Nonaktifkan email kata sandi pendaftaran pengguna

13

Jadi, WordPress 4.3 memiliki sistem kata sandi baru seperti yang kita semua tahu. Sayangnya, sistem baru ini telah menghilangkan kemampuan untuk TIDAK mengirim email kepada pengguna baru.

Klien saya menggunakan sistem di mana ia mengirim email khusus ke kliennya, mendaftarkan email mereka secara manual, dan kemudian mengirim mereka email dengan info login dengan pesan khusus. Kami menyadari bahwa sistem baru ini berusaha lebih aman, tetapi ini tidak berfungsi untuk jumlah kontrol yang diinginkannya.

Saya telah menemukan kode berikut dalam pencarian saya untuk solusi untuk mematikan email ini, tapi saya pikir mereka hanya mematikan email notifikasi karena jika email pengguna DIUBAH untuk pengguna yang terdaftar sebelumnya, bukan ketika itu pertama kali dibuat:

add_filter( 'send_password_change_email', '__return_false');
add_filter( 'send_email_change_email', '__return_false');

Adakah yang tahu cara untuk mematikan email kata sandi awal ini yang dikirim setelah pendaftaran?

Terima kasih.

Lisa Cerilli
sumber
2
Sudahkah Anda mencoba ini? add_filter( 'user_registration_email', '__return_false');
Abhik

Jawaban:

9

Anda dapat memotong email ini sebelum dikirim menggunakan phpmailer_inithook.

Secara default, kail ini menyala sebelum ada email yang dikirim. Dalam fungsi di bawah ini, $phpmailerakan menjadi instance dari PHPMailer , dan Anda dapat menggunakan metode-metodenya untuk menghapus penerima default dan memanipulasi email sebelum dikirim.

add_action('phpmailer_init', 'wse199274_intercept_registration_email');
function wse199274_intercept_registration_email($phpmailer){
    $admin_email = get_option( 'admin_email' );

    # Intercept username and password email by checking subject line
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # clear the recipient list
        $phpmailer->ClearAllRecipients();
        # optionally, send the email to the WordPress admin email
        $phpmailer->AddAddress($admin_email);
    }else{
        #not intercepted
    }
}
sxalexander
sumber
ini berfungsi dengan sempurna, sepenuhnya menyelesaikan masalah saya dan sangat cocok untuk penggunaan lain juga. Terima kasih atas jawaban yang bagus!
pattyd
3

Sebenarnya itu tergantung bagaimana Anda membuat pengguna baru. Jika Anda melakukannya dari administrasi - Pengguna - Tambah Baru Anda benar. Dalam 4.3 sayangnya Anda tidak dapat menonaktifkan pengiriman email notifikasi. Tetapi jika Anda benar-benar ingin membuat pengguna baru tanpa email, ada caranya.

Anda dapat membuat plugin kecil tempat Anda akan membuat akun baru sendiri melalui wp_insert_userfungsi, yang tidak mengirim email apa pun secara default.

Fungsi ini bisa disebut seperti ini.

wp_insert_user( $userdata );

Di mana userdataparameternya adalah sebuah array di mana Anda dapat meneruskan semua informasi yang dibutuhkan.

$userdata = array(
    'user_login'  =>  'login',
    'user_pass'   =>  'password',
);

$user_id = wp_insert_user( $userdata ) ;

//On success
if ( ! is_wp_error( $user_id ) ) {
    echo "User created : ". $user_id;
}

Untuk informasi lebih lanjut, periksa kodeks di sini .

Emetrop
sumber
Jadi fungsi ini dipanggil setiap kali pengguna baru dibuat saya anggap?
Lisa Cerilli
3

The wp_new_user_notificationfungsi pluggable, sehingga Anda dapat menggantinya dengan mendefinisikan Anda sendiri. Anda harus dapat menyalin seluruh fungsi dari wp-includes/pluggable.phpke plugin Anda (atau functions.php) dan menghapus baris yang mengirim email.

Simon Blackbourn
sumber
1
Anda tidak dapat mengesampingkan wp_new_user_notification di functions.php theme, karena fungsi pluggable dimuat sebelum theme. Itu harus diganti dalam plugin atau mu-plugin. Baca selengkapnya: wordpress.stackexchange.com/a/55966/56759
fandasson
1

Untuk mengatasi ini dalam tema Anda buat plugin baru dengan membuat file baru wp_new_user_notifications.php(nama terserah Anda) dan letakkan di wp-content/mu-pluginsfolder. Jika tidak ada folder seperti itu, buat satu. Ingatlah untuk meletakkan file php langsung ke folder, bukan ke subfolder.

Lalu lanjutkan seperti yang disarankan Simon - salin wp_new_user_notifications.phpmetode dari wp-includes/pluggable.phpke wp_new_user_notifications.phpfile baru Anda dan modifikasi seperlunya.

Untuk menjawab pertanyaan Anda: untuk mematikan kata sandi email awal sudah cukup untuk menghapus wp_mailpanggilan metode terakhir .

fandasson
sumber
0
add_filter('send_password_change_email', '__return_false');

Bekerja Tetapi penting bahwa ditambahkan ke plugin itu sendiri dan bukan functions.php untuk tema.

Suka.

class ... {
  public function __construct() {
    ...
    $this->init_hooks();
  }

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
Philip
sumber