Disabilita l'e-mail della password di registrazione dell'utente


13

Quindi, WordPress 4.3 ha un nuovo sistema di password come tutti sappiamo. Sfortunatamente, questo nuovo sistema ha eliminato la possibilità di NON inviare e-mail ai nuovi utenti.

Il mio cliente utilizzava un sistema in cui inviava un'e-mail personalizzata ai suoi clienti, registrando manualmente le loro e-mail e quindi inviando loro un'e-mail con le informazioni di accesso con un messaggio personalizzato. Siamo consapevoli che questo nuovo sistema sta cercando di essere più sicuro, ma questo non funziona per la quantità di controllo che vorrebbe.

Ho trovato il seguente codice nella mia ricerca di una soluzione per disattivare queste e-mail, ma penso che disattivino le e-mail di notifica solo se l'e-mail di un utente è CAMBIATA per gli utenti precedentemente registrati, non quando è stata creata per la prima volta:

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

Qualcuno sa come disattivare queste e-mail di password iniziali inviate dopo la registrazione?

Grazie.


2
Hai provato questo? add_filter( 'user_registration_email', '__return_false');
Abhik,

Risposte:


9

È possibile intercettare questa e-mail prima che venga inviata utilizzando l' phpmailer_inithook.

Per impostazione predefinita, questo hook si attiva prima di inviare qualsiasi e-mail. Nella funzione seguente, $phpmailersarà un'istanza di PHPMailer e puoi usare i suoi metodi per rimuovere il destinatario predefinito e manipolare l'e-mail prima che venga inviata.

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

funziona perfettamente, risolto completamente il mio problema ed è perfetto anche per altri usi. Grazie per un'ottima risposta!
Pattyd,

3

In realtà dipende da come si crea il nuovo utente. Se lo fai dall'amministrazione - Utenti - Aggiungi nuovo hai ragione. In 4.3 sfortunatamente non è possibile disabilitare l'invio dell'e-mail di notifica. Ma se vuoi davvero creare un nuovo utente senza l'e-mail, c'è un modo.

Puoi creare un piccolo plug-in in cui creare un nuovo account da solo tramite la wp_insert_userfunzione, che per impostazione predefinita non invia e-mail.

Questa funzione può essere chiamata in questo modo.

wp_insert_user( $userdata );

Dove il userdataparametro è un array in cui è possibile passare tutte le informazioni necessarie.

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

Per maggiori informazioni controlla il codice qui .


Quindi questa funzione viene chiamata ogni volta che viene creato un nuovo utente suppongo?
Lisa Cerilli,

3

La wp_new_user_notificationfunzione è collegabile, quindi puoi sovrascriverla definendo la tua. Dovresti essere in grado di copiare l'intera funzione dal wp-includes/pluggable.phptuo plugin (o functions.php) e rimuovere la linea che invia l'e-mail.


1
Non puoi sovrascrivere wp_new_user_notification nelle funzioni.php del tema, perché le funzioni inseribili vengono caricate prima del tema. Deve essere sostituito nel plugin o mu-plugin. Per saperne di più: wordpress.stackexchange.com/a/55966/56759
fandasson

1

Per risolvere questo problema nel tuo tema, crea un nuovo mu-plugin creando un nuovo file wp_new_user_notifications.php(il nome dipende da te) e mettilo nella wp-content/mu-pluginscartella. Se non esiste una cartella simile, crearne una. Ricorda di mettere il file php direttamente nella cartella, non in nessuna sottocartella.

Quindi continua come suggerito da Simon : copia il wp_new_user_notifications.phpmetodo dal wp-includes/pluggable.phptuo nuovo wp_new_user_notifications.phpfile e modifica se necessario.

Per rispondere alla tua domanda: per disattivare le e-mail con password iniziale è sufficiente rimuovere l'ultima wp_mailchiamata del metodo.


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

Lavori. Ma è essenziale che sia stato aggiunto al plug-in stesso e non funzioni.php per il tema.

Piace.

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.