Disattiva le email di amministratore per nuove registrazioni utente

11 mar 2013, 12:38:13
Visualizzazioni: 14.3K
Voti: 3

Come posso disattivare le notifiche email all'utente e all'amministratore quando viene registrato un nuovo utente?

Ho visto alcuni suggerimenti e plugin ma nessuno sembra funzionare. Uno era quello di prendere la funzione da uno dei plugin:

if ( !function_exists('wp_new_user_notification') ) :
/**
 * Notifica l'amministratore del blog di un nuovo utente, normalmente via email.
 *
 * @since 2.0
 *
 * @param int $user_id ID utente
 * @param string $plaintext_pass Opzionale. La password in testo semplice dell'utente
 */
function wp_new_user_notification($user_id, $plaintext_pass = '') {
    $user = new WP_User($user_id);

    $user_login = stripslashes($user->user_login);
    $user_email = stripslashes($user->user_email);

    // L'opzione blogname viene convertita con esc_html quando viene salvata nel database in sanitize_option
    // vogliamo ripristinarlo per il testo semplice delle email.
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    $message  = sprintf(__('Nuova registrazione utente sul tuo sito %s:'), $blogname) . "\r\n\r\n";
    $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
    $message .= sprintf(__('Email: %s'), $user_email) . "\r\n";

    @wp_mail(get_option('admin_email'), sprintf(__('[%s] Nuova registrazione utente'), $blogname), $message);

    if ( empty($plaintext_pass) )
        return;

    $message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    // wp_mail($user_email, sprintf(__('[%s] Il tuo username e password'), $blogname), $message)

}
endif;

Le domande e i suggerimenti erano piuttosto vecchi quindi forse WP 3.5 sovrascrive qualcosa.

Alla registrazione continuo a ricevere l'email all'amministratore e un'email all'utente.

Non voglio però bloccare l'email per il recupero password.

2
Commenti

È disponibile un plugin installabile che offra la stessa funzionalità?

orschiro orschiro
30 mag 2016 08:15:07

@orschiro Ecco qui - https://wordpress.org/plugins/disable-new-user-notifications/

Paras Shah Paras Shah
2 dic 2016 08:03:23
Tutte le risposte alla domanda 4
4

La funzione wp_new_user_notification è "pluggable". Ciò significa che puoi sovrascriverla dichiarando la tua versione di questa funzione nel tuo plugin/tema.

Quindi, se desideri disabilitare completamente tutte le notifiche, fallo in questo modo:

if ( !function_exists( 'wp_new_user_notification' ) ) :
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
    return;
}
endif;

Tuttavia non ti consiglio di disabilitare tutte le notifiche, e ti suggerirei almeno di inviare una notifica all'utente (Come potrebbe altrimenti scoprire la sua password?). In questo caso il tuo codice dovrebbe essere il seguente:

if ( !function_exists( 'wp_new_user_notification' ) ) :
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
    $user = get_userdata( $user_id );

    $user_login = stripslashes($user->user_login);
    $user_email = stripslashes($user->user_email);

    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    if ( empty($plaintext_pass) ) {
        return;
    }

    $message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);
}
endif;
11 mar 2013 13:03:12
Commenti

+1 @Rob ... come fa un utente a ottenere una password se disabiliti la notifica? Questo è un ottimo punto sollevato da Eugene Manuilov.

s_ha_dum s_ha_dum
11 mar 2013 16:08:41

@s_ha_dum Ho una registrazione frontend che utilizza Gravity Forms, quindi l'email viene inviata separatamente. Ma questo bloccherà l'email per il recupero password?

Rob Rob
11 mar 2013 16:14:39

@EugeneManuilov Ho appena provato il primo box di codice ma continuo a ricevere le email.

Rob Rob
11 mar 2013 16:17:07

@Rob mostrac il tuo codice

Eugene Manuilov Eugene Manuilov
11 mar 2013 16:49:11
0

Secondo questa pagina sarebbe sufficiente utilizzare questo codice (per disabilitare completamente tutte le notifiche):

if ( !function_exists('wp_new_user_notification') ) {    
  function wp_new_user_notification( ) {}    
}

È abbastanza simile alla risposta data, ma un po' più breve. Ho pensato di condividerlo per quello che vale.

2 giu 2015 14:18:58
0

A partire dalla versione 4.6 è disponibile un parametro per disabilitare le notifiche di amministrazione. https://developer.wordpress.org/reference/functions/wp_new_user_notification/

  • @since 4.6.0 Il parametro $notify accetta 'user' per inviare la notifica solo all'utente creato.
  • @param string $notify Opzionale. Tipo di notifica che dovrebbe essere inviata. Accetta 'admin' o una stringa vuota (solo admin), 'user', o 'both' (admin e utente). Valore predefinito stringa vuota. */
  • function wp_new_user_notification( $user_id, $deprecated = null, $notify = 'user' )
10 feb 2017 21:49:56
0

Ho dovuto farlo oggi e ho notato che molte delle soluzioni disponibili sembrano piuttosto obsolete. Questo sembra essere un modo migliore senza dover sovrascrivere le funzioni "pluggable". Non è il mio codice esatto ma dovrebbe essere un buon riferimento.

add_action( 'register_post', 'maybe_stop_notifications', 10, 3 ); 

/**
 * Intercetta la registrazione utente e possibilmente disabilita le notifiche
 *
 * @param string $sanitized_user_login Nome utente sanitizzato
 * @param string $user_email Email dell'utente
 * @param WP_Error $errors Oggetto errori WP
 */
function maybe_stop_notifications ( $sanitized_user_login, $user_email, $errors ) { 

  // Se non ci sono errori nella registrazione
  if( empty( $errors->get_error_code() )) { 

       // Rimuove l'azione che invia le notifiche email per il nuovo utente
       remove_action( 'register_new_user', 'wp_send_new_user_notifications' );

  }
} 
4 mag 2017 18:57:36