Cum să dezactivezi notificările prin email pentru înregistrarea utilizatorilor noi în WordPress

11 mar. 2013, 12:38:13
Vizualizări: 14.3K
Voturi: 3

Cum pot dezactiva notificările prin email pentru utilizator și administrator atunci când un utilizator nou se înregistrează?

Am văzut câteva sugestii și plugin-uri, dar niciunul nu pare să funcționeze. Una dintre sugestii era să preiau funcția dintr-un plugin:

if ( !function_exists('wp_new_user_notification') ) :
/**
 * Notifică administratorul blogului despre un utilizator nou, în mod normal prin email.
 *
 * @since 2.0
 *
 * @param int $user_id ID-ul utilizatorului
 * @param string $plaintext_pass Opțional. Parola în text simplu a utilizatorului
 */
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);

    // Opțiunea blogname este escapată cu esc_html la salvarea în baza de date în sanitize_option
    // dorim să inversăm acest lucru pentru zona de text simplu a emailurilor.
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    $message  = sprintf(__('Înregistrare utilizator nou pe site-ul tău %s:'), $blogname) . "\r\n\r\n";
    $message .= sprintf(__('Nume utilizator: %s'), $user_login) . "\r\n\r\n";
    $message .= sprintf(__('Email: %s'), $user_email) . "\r\n";

    @wp_mail(get_option('admin_email'), sprintf(__('[%s] Înregistrare Utilizator Nou'), $blogname), $message);

    if ( empty($plaintext_pass) )
        return;

    $message  = sprintf(__('Nume utilizator: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Parolă: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    // wp_mail($user_email, sprintf(__('[%s] Numele și parola ta de utilizator'), $blogname), $message)

}
endif;

Întrebările și sugestiile erau destul de vechi, așa că poate WordPress 3.5 suprascrie ceva.

La înregistrare, încă primesc email-ul către administrator și un email către utilizator.

Nu vreau să blochez email-ul pentru parolă uitată.

2
Comentarii

Există un plugin instalabil disponibil care are aceeași funcționalitate?

orschiro orschiro
30 mai 2016 08:15:07

@orschiro Iată-l - https://wordpress.org/plugins/disable-new-user-notifications/

Paras Shah Paras Shah
2 dec. 2016 08:03:23
Toate răspunsurile la întrebare 4
4

Funcția wp_new_user_notification este "pluggable". Aceasta înseamnă că o poți suprascrie declarând propria versiune a acestei funcții în plugin-ul/tema ta.

Deci, dacă dorești să dezactivezi complet toate notificările, poți face astfel:

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

Totuși, nu aș recomanda să dezactivezi toate notificările și aș sugera să trimiți cel puțin o notificare către utilizator (Cum altfel va afla utilizatorul parola?). În acest caz, codul tău ar trebui să arate astfel:

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(__('Nume de utilizator: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Parolă: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    wp_mail($user_email, sprintf(__('[%s] Numele și parola dumneavoastră'), $blogname), $message);
}
endif;
11 mar. 2013 13:03:12
Comentarii

+1 @Rob ... cum poate un utilizator obține o parolă dacă dezactivezi notificarea? Acesta este un punct foarte bun pe care îl face Eugene Manuilov.

s_ha_dum s_ha_dum
11 mar. 2013 16:08:41

@s_ha_dum Am o înregistrare pe frontend folosind Gravity Forms, care trimite un email separat. Va bloca acest lucru email-ul pentru parolă uitată?

Rob Rob
11 mar. 2013 16:14:39

@EugeneManuilov Tocmai am încercat prima casetă de cod, dar tot primesc email-uri.

Rob Rob
11 mar. 2013 16:17:07

@Rob arată-ne codul tău

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

Conform acestei pagini, ar fi suficient să folosiți acest cod (pentru a dezactiva complet toate notificările):

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

Este destul de apropiat de răspunsul dat, dar puțin mai scurt. Am considerat că merită să împărtășesc această informație.

2 iun. 2015 14:18:58
0

Începând cu versiunea 4.6, există un parametru pentru a dezactiva notificările pentru administrator. https://developer.wordpress.org/reference/functions/wp_new_user_notification/

  • @since 4.6.0 Parametrul $notify acceptă valoarea 'user' pentru trimiterea notificării doar către utilizatorul creat.
  • @param string $notify Opțional. Tipul de notificare care ar trebui să fie trimisă. Acceptă 'admin' sau un șir gol (doar administrator), 'user', sau 'both' (administrator și utilizator). Valoare implicită șir gol. */
  • function wp_new_user_notification( $user_id, $deprecated = null, $notify = 'user' )
10 feb. 2017 21:49:56
0

A trebuit să fac asta astăzi și am descoperit că multe dintre soluțiile disponibile par destul de depășite. Aceasta pare a fi o metodă mai bună fără a suprascrie funcții pluggable. Nu este exact codul meu, dar ar trebui să fie un bun punct de referință.

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

function maybe_stop_notifications ( $sanitized_user_login, $user_email, $errors ) { 

  if( empty( $errors->get_error_code() )) { 

       remove_action( 'register_new_user', 'wp_send_new_user_notifications' );

  }
} 
4 mai 2017 18:57:36