Disattivare la notifica email dopo il cambio della password
Voglio disattivare la notifica email quando un utente o un amministratore modifica la password di un utente.
Dopo alcune ricerche su Google, ho scoperto che devo creare un plugin e sovrascrivere la funzione wp_password_change_notification
che si trova in pluggable.php
.
Questo è il plugin e la funzione:
<?php
/*
Plugin Name: Stop email change password
Description: Qualsiasi descrizione
*/
if ( !function_exists( 'wp_password_change_notification' ) ) {
function wp_password_change_notification() {}
}
?>
Ho caricato il file nella mia cartella dei plugin e l'ho attivato nel pannello di amministrazione!
Questo deve essere fatto con un plugin perché il file pluggable.php
viene caricato prima del file functions.php
.
Comunque non sembra funzionare nel mio caso.
L'utente continua a ricevere l'email.
Ho disattivato tutti i plugin e ho eseguito il plugin su un'installazione pulita quindi non ci sono interferenze
Anche il WP_DEBUG
non mostra alcun errore!
Qualcuno può dirmi cosa cambiare o come risolvere in un altro modo (eccetto modifiche al core :-))
M.
Per disabilitare le notifiche email agli utenti, aggiungi questo codice in un plugin o nel tema:
add_filter( 'send_password_change_email', '__return_false' );
Per tua informazione, la funzione wp_password_change_notification()
gestisce la notifica via email all'amministratore quando un utente cambia la propria password

Per disabilitare la notifica via email all'Amministratore quando un utente reimposta la propria password, crea un Plugin (o un Must Use Plugin) utilizzando il seguente snippet di codice:
/**
* Disabilita la notifica all'Amministratore per il cambio password utente
*
* @see pluggable.php
*/
if ( ! function_exists( 'wp_password_change_notification' ) ) {
function wp_password_change_notification( $user ) {
return;
}
}
Questo impedirà l'invio della seguente email all'indirizzo email dell'Amministratore specificato in Impostazioni > Generali:
Da: WordPress <wordpress@example.com>
A: admin@example.com
Oggetto: [WordPress] Password ModificataPassword modificata per l'utente: username
La soppressione di questa notifica email deve essere gestita con un plugin perché pluggable.php
viene caricato prima del file functions.php
del tema.
Se invece desideri disabilitare la notifica via email all'Utente che conferma che un utente ha modificato con successo la propria password, utilizza il seguente filtro inserito nel functions.php
:
/**
* Disabilita la notifica all'Utente per la conferma di cambio password
*/
add_filter( 'send_password_change_email', '__return_false' );
Questo impedirà l'invio della seguente email:
Da: WordPress <wordpress@example.com>
A: username@example.com
Oggetto: [WordPress] Password ModificataCiao username,
Questa notifica conferma che la tua password è stata modificata su WordPress.
Se non hai modificato la password, contatta l'Amministratore del Sito all'indirizzo admin@example.com
Questa email è stata inviata a username@example.com
Cordiali saluti,
Tutto il team di WordPress
http://example.com/

C'è un grosso errore in questa risposta. Il nome del filtro è "send_password_change_email" non "send_email_change_email".
https://codex.wordpress.org/Plugin_API/Filter_Reference/send_password_change_email

Notato. Per riferimento, i due filtri sono correlati e possono essere utilizzati per disabilitare la notifica all'utente quando viene modificata l'email o la password dall'utente. L'uso dell'uno o dell'altro dipende da quale notifica si desidera sopprimere - la modifica dell'email o la modifica della password. Per un quadro chiaro, fare riferimento alla funzione WordPress wp_update_user()
in wp-includes/user.php
: https://core.trac.wordpress.org/browser/tags/4.9.5/src/wp-includes/user.php#L1795

Se stai utilizzando Woocommerce:
A partire dalla versione WC 3.8.0 (Novembre 2019), è ora disponibile un hook filter dedicato per questa funzionalità:
add_filter('woocommerce_disable_password_change_notification', '__return_true');
Dovrebbe disabilitare le notifiche di cambio password.

quell'hook è solo quando si utilizza woocommerce (woocommerce 3.8, non wordpress 3.8)

@Rafa Oops, sì, ho fatto così tanto sviluppo WC + WP che le linee si sono confuse per me. Ho modificato la mia risposta grazie.

Attenzione che questo disattiverà l'email di reset password per l'utente finale (vedi /woocommerce/includes/shortcodes/class-wc-shortcode-my-account.php
) e quindi non è correlato alle notifiche admin...

Questo hook 'woocommerce_disable_password_change_notification' disattiva effettivamente l'email di notifica "Password modificata" per l'amministratore che viene attivata nei siti WooCommerce. Noterai in /woocommerce/includes/shortcodes/class-wc-shortcode-my-account.php
che impedisce l'esecuzione della funzione wp_password_change_notification()
, la quale "Notifica all'amministratore del blog la modifica della password da parte di un utente" WordPress Developer Reference

Questo funziona per me, basta svuotare l'indirizzo email.
// Disabilita l'email di notifica per il cambio password.
add_filter('wp_password_change_notification_email', function ($wp_password_change_notification_email) {
$wp_password_change_notification_email['to'] = '';
return $wp_password_change_notification_email;
});

Copia il seguente codice e salvalo come disable_email.php. Poi posiziona il file nella directory "wp-content/plugins/". E attivalo dal Pannello di Amministrazione.
<?php
/*
Plugin Name: Stop email change password
Description: Whatever
*/
if (!function_exists('wp_password_change_notification')) {
function wp_password_change_notification($user) {
return;
}
}
?>

Sì, è quello che pensavo di aver descritto. Aggiornerò la domanda se non era chiaro!

WordPress invia la notifica per impostazione predefinita quando l'utente viene aggiornato con wp_update_user()
.
Tentare di sovrascrivere questo comportamento utilizzando filtri, modificando pluggable.php
o sovrascrivendo con una funzione vuota, non funziona.
Invece, utilizza wp_set_password( $password, $user_id )
quando non vuoi che venga attivata l'e-mail di notifica per utenti/amministratori durante un reset della password.

modifica: questo serve a disabilitare solo le notifiche per gli amministratori quando un altro utente del sito cambia la propria password. Potrei aver frainteso la domanda! Scusate =]
La funzione wp_password_change_notification
è responsabile di questa funzionalità in WordPress che invia email agli amministratori per gli aggiornamenti delle password degli utenti (come hanno menzionato altri post).
Quello che non ho visto menzionato qui è che all'interno di ./wp-includes/default-filters.php
~riga 499 (al momento della scrittura) potete vedere questa funzione aggiunta all'azione after_password_reset
.
Una soluzione rapida è quindi semplicemente rimuoverla dalla lista delle azioni:
remove_action( 'after_password_reset', 'wp_password_change_notification' );
Potete assolutamente riscrivere/sovrascrivere wp_password_change_notification
, essendo una delle funzioni di pluggable.php
, ma se state cercando di rimuovere questa funzionalità piuttosto che aggiornarla, questa potrebbe essere un'opzione migliore.

Aggiungerò che l'azione after_password_reset viene eseguita dopo la procedura di reset della password (schermata di login). L'invio di una notifica di modifica password come risultato della modifica del profilo può essere controllato dal filtro send_password_change_email.

Le altre risposte sono sbagliate perché disabilitano l'invio dell'email quando viene modificata l'email, non quando viene cambiata la password.
Aggiungere il codice qui sotto nel tuo file functions.php sotto il tema attivo (o alternativamente in un plugin) dovrebbe funzionare. Ha funzionato per me nella versione 4.6.1
/**
* Disabilita l'invio dell'email di modifica password
*/
add_filter( 'send_password_change_email', '__return_false' );

Utilizza la funzione wp_set_password() invece di wp_update_user() per aggiornare la password in quanto non attiverà una notifica email.
