Come applicare il filtro "retrieve_password_message"?

6 set 2014, 20:52:39
Visualizzazioni: 15.5K
Voti: 4

Vorrei modificare il corpo dell'email di reset password che WordPress invia con qualcosa di più amichevole.

Sto provando a usare il filtro "retrieve_password_message" ma non riesco a farlo funzionare correttamente.

Qualcuno potrebbe gentilmente postare un esempio di codice?

0
Tutte le risposte alla domanda 3
0

le risposte fornite hanno buone intenzioni, ma non sono corrette. La funzione di filtro ha più parametri, 4 per l'esattezza.

questa soluzione ha funzionato per me per il messaggio (volevo sostituire il nome utente con l'email dell'utente)

nota: abbiamo una pagina multisito. Potresti voler sostituire network_site_url con get_site_url()

tipicamente nel tuo functions.php del tema WordPress:

add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4);

function mapp_custom_password_reset($message, $key, $user_login, $user_data )    {

  $message = "Qualcuno ha richiesto un reset della password per il seguente account:

" . sprintf(__('%s'), $user_data->user_email) . "

Se è stato un errore, ignora questa email e non succederà nulla.

Per reimpostare la tua password, visita il seguente indirizzo:

" .  '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n" . "

Se hai ulteriori problemi, inviaci un'email a help@myapp.com

Il Team Myapp";


  return $message;

}

bonus: cambia il titolo/oggetto dell'email

add_filter( 'retrieve_password_title',
  function( $title )
  {
    $title = __( 'Reset password per myapp.org' );
    return $title;
  }
);
4 apr 2017 17:45:46
2

Pensavo che questo frammento di codice potesse essere utile a chiunque stia cercando di personalizzare l'email di reset della password.

//* Email di attivazione per il reset della password -> Corpo
add_filter( 'retrieve_password_message', 'wpse_retrieve_password_message', 10, 2 );
function wpse_retrieve_password_message( $message, $key ){
    $user_data = '';
    // Se non viene inviato alcun valore, restituisce false
    if( ! isset( $_POST['user_login'] )  ){
            return '';
    }
    // Recupera le informazioni dell'utente da user_login
    if ( strpos( $_POST['user_login'], '@' ) ) {

        $user_data = get_user_by( 'email', trim( $_POST['user_login'] ) );
    } else {
        $login = trim($_POST['user_login']);
        $user_data = get_user_by('login', $login);
    }
    if( ! $user_data  ){
        return '';
    }
    $user_login = $user_data->user_login;
    $user_email = $user_data->user_email;
    // Configurazione del messaggio per il recupero password
    $message = "Sembra che tu voglia reimpostare la tua password!\n\n";
    $message .= "Per favore clicca su questo link:\n";
    $message .= '<a href="';
    $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
    $message .= '">"';
    $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
    $message .= '"</a>\n\n"';
    $message .= 'Cordiali saluti,<br/>Dream Team';
    // Restituisce il messaggio completo per il recupero password
    return $message;
}
11 set 2014 08:43:47
Commenti

Non è necessario controllare i dati $_POST per ottenere user_login. Hai già user_login nel parametro dell'hook. Usa 3 parametri invece di 2. https://developer.wordpress.org/reference/hooks/retrieve_password_message/

hkchakladar hkchakladar
5 nov 2017 20:28:32

Scusa per il voto negativo, ma volevo davvero dare alla risposta di @Toskan la possibilità di arrivare in cima - è una risposta molto migliore e utilizza i dati già disponibili dal filtro invece di ricostruirli.

squarecandy squarecandy
1 mag 2018 22:13:04
6
add_filter("retrieve_password_message", "your_custom_message", 99, 2);

  function your_custom_message($message, $key)    {

  $message = "your_custom_message";

  return $message;

}

Questo è un esempio di utilizzo dell'hook filter 'retrieve_password_message'.

Serve per sovrascrivere il corpo dell'email che qualcuno riceve durante il recupero della password.

6 set 2014 21:36:24
Commenti

Nota: non l'ho testato.

Domain Domain
6 set 2014 21:36:59

Per favore spiega cosa fa.

fuxia fuxia
7 set 2014 02:10:56

Ciao, grazie per il contributo :-) Potresti per favore aggiungere il codice per il link di reimpostazione della password.

William William
7 set 2014 07:59:29

@toscho, ho aggiornato la risposta con una spiegazione.

Domain Domain
7 set 2014 19:56:14

@William, cosa stai cercando esattamente?

Domain Domain
7 set 2014 19:57:09

@WisdmLabs Il link per il reset della password manca nel tuo snippet. http://exmple.com/wp-login.php?action=rp&key={ la chiave } &login={ lo username } :-)

William William
8 set 2014 12:33:37
Mostra i restanti 1 commenti