Disabilitare l'email di registrazione con password in WordPress

21 ago 2015, 11:15:54
Visualizzazioni: 17K
Voti: 13

Come sappiamo, WordPress 4.3 ha introdotto un nuovo sistema per le password. Purtroppo, questo nuovo sistema ha eliminato la possibilità di NON inviare automaticamente un'email ai nuovi utenti.

Il mio cliente utilizzava un sistema in cui inviava un'email personalizzata ai clienti, registrando manualmente le loro email e poi inviando loro le credenziali di accesso con un messaggio personalizzato. Sappiamo che questo nuovo sistema cerca di essere più sicuro, ma non funziona per il livello di controllo che il cliente desidera.

Nella mia ricerca di una soluzione per disattivare queste email, ho trovato il seguente codice, ma credo che disattivi solo le email di notifica quando viene CAMBIATA l'email per utenti già registrati, non quando l'account viene creato:

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

Qualcuno conosce un modo per disattivare queste email iniziali con la password che vengono inviate dopo la registrazione?

Grazie.

1
Commenti

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

Abhik Abhik
23 ago 2015 08:06:47
Tutte le risposte alla domanda 5
1
10

Puoi intercettare questa email prima che venga inviata utilizzando l'hook phpmailer_init.

Per impostazione predefinita, questo hook viene attivato prima che qualsiasi email venga inviata. Nella funzione seguente, $phpmailer sarà un'istanza di PHPMailer, e puoi utilizzare i suoi metodi per rimuovere il destinatario predefinito e manipolare l'email prima che venga inviata.

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

    # Intercetta l'email con username e password controllando l'oggetto
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # cancella la lista dei destinatari
        $phpmailer->ClearAllRecipients();
        # opzionalmente, invia l'email all'indirizzo email dell'amministratore WordPress
        $phpmailer->AddAddress($admin_email);
    }else{
        # non intercettato
    }
}
8 dic 2015 01:25:08
Commenti

funziona perfettamente, ha risolto completamente il mio problema ed è perfetto anche per altri utilizzi. Grazie per la risposta fantastica!

pattyd pattyd
19 feb 2017 22:33:29
1

In realtà dipende da come crei il nuovo utente. Se lo fai dalla sezione di amministrazione - Utenti - Aggiungi nuovo hai ragione. Nella versione 4.3 purtroppo non puoi disabilitare l'invio dell'email di notifica. Ma se vuoi veramente creare un nuovo utente senza l'email, c'è un modo.

Puoi creare un piccolo plugin dove creerai un nuovo account manualmente tramite la funzione wp_insert_user, che per impostazione predefinita non invia alcuna email.

Questa funzione può essere chiamata così.

wp_insert_user( $userdata );

Dove il parametro userdata è un array in cui puoi passare tutte le informazioni necessarie.

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

$user_id = wp_insert_user( $userdata ) ;

//In caso di successo
if ( ! is_wp_error( $user_id ) ) {
    echo "Utente creato: ". $user_id;
}

Per maggiori informazioni controlla il codex qui.

21 ago 2015 19:41:51
Commenti

Quindi questa funzione viene chiamata ogni volta che viene creato un nuovo utente, giusto?

Lisa Lisa
23 ago 2015 07:55:08
1

La funzione wp_new_user_notification è "pluggable", quindi puoi sovrascriverla definendone una tua. Dovresti essere in grado di copiare l'intera funzione da wp-includes/pluggable.php nel tuo plugin (o nel functions.php) e rimuovere la riga che invia l'email.

25 ago 2015 14:12:06
Commenti

Non puoi sovrascrivere wp_new_user_notification nel functions.php del tema, perché le funzioni pluggable vengono caricate prima del tema. Deve essere sovrascritta in un plugin o mu-plugin. Per saperne di più: http://wordpress.stackexchange.com/a/55966/56759

fandasson fandasson
16 ott 2015 16:16:00
0

Per risolvere questo problema nel tuo tema, crea un nuovo mu-plugin generando un file wp_new_user_notifications.php (il nome è a tua discrezione) e inseriscilo nella cartella wp-content/mu-plugins. Se questa cartella non esiste, creala. Ricorda di posizionare il file php direttamente nella cartella principale, non in alcuna sottocartella.

Quindi procedi come suggerito da Simon - copia il metodo wp_new_user_notifications.php da wp-includes/pluggable.php nel tuo nuovo file wp_new_user_notifications.php e modificalo secondo necessità.

Per rispondere alla tua domanda: per disattivare le email iniziali con la password è sufficiente rimuovere l'ultima chiamata al metodo wp_mail.

16 ott 2015 16:25:02
0
add_filter('send_password_change_email', '__return_false');

Funziona. Ma è essenziale che venga aggiunto al plugin stesso e non al functions.php del tema.

Ad esempio:

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
30 gen 2018 16:54:53