Come posso modificare il testo predefinito dell'email di reset (smarrita) della password?
Ho trovato domande simili qui, ma non sono riuscito ad applicare le soluzioni fornite.
L'email standard di reset della password che WordPress sta inviando non fornisce un URL cliccabile per gli utenti che reimpostano la password. Ecco come appare l'email attuale:
Sembra che l'URL del sito (https://jewelbound.com) dovrebbe essere in fondo, collegato al "/wp-login.php?action......"
Per favore, aiutatemi a capire come modificare il seguente codice del template email per rimuovere l'URL "https://jewelbound.com/" dall'alto, aggiungerlo all'URL fornito in basso e renderlo un unico URL lungo, connesso (e cliccabile) che permetterà all'utente di reimpostare la password. Ecco il template dal mio file wp-login.php:
$message = __( 'Qualcuno ha richiesto un reset della password per il seguente account:' ) . "\r\n\r\n";
/* traduzione: %s: nome del sito */
$message .= sprintf( __( 'Nome del Sito: %s'), $site_name ) . "\r\n\r\n";
/* traduzione: %s: login utente */
$message .= sprintf( __( 'Nome Utente: %s'), $user_login ) . "\r\n\r\n";
$message .= __( 'Se questo è stato un errore, ignora questa email e non succederà nulla.' ) . "\r\n\r\n";
$message .= __( 'Per reimpostare la password, visita il seguente indirizzo:' ) . "\r\n\r\n";
$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
/* traduzione: Oggetto email reset password. %s: Nome del sito */
$title = sprintf( __( '[%s] Reset Password' ), $site_name );
Grazie in anticipo a chiunque sia disposto ad aiutare!

Per rispondere alla tua domanda specifica, "Come posso modificare il testo predefinito dell'email di reset (recupero) password," la risposta sarebbe utilizzare il filtro retrieve_password_message
. E alla fine questo potrebbe essere un modo per risolvere il tuo problema.
Ma penso che tu debba scavare un po' più a fondo per capire cosa sta realmente succedendo. Nella tua domanda hai chiesto di modificare il "testo predefinito dell'email di reset password" ma quello che hai attualmente non è il vero default. Se lo fosse, la stringa dell'URL sarebbe tutta unita, non separata come appare ora.
Inizierei disattivando tutti i plugin e passando dal tema attualmente in uso al tema predefinito di WordPress. In altre parole, un'installazione molto basilare senza interferenze. Prova così. Se non ottieni lo stesso risultato, allora da qualche parte c'è qualcosa che sta alterando l'URL. Ci sono filtri per retrieve_password_message
e network_site_url
che potrebbero permettere a qualche funzione di filtro di causare il tuo problema. Disattivando i plugin e usando un tema base senza modifiche dovresti scoprire se questo è il caso.
In definitiva, se non riesci a risalire alla causa, riscrivere l'intero contenuto del messaggio nel contesto del filtro retrieve_password_message
ti fornirà una soluzione alternativa a qualunque sia il problema. Il filtro qui sotto riproduce il messaggio predefinito. Include una potenziale soluzione alternativa per la generazione dell'URL nel caso in cui qualcosa collegato a network_site_url
sia il colpevole. Se lo è, usa l'alternativa e inserisci manualmente il dominio come indicato.
add_filter( 'retrieve_password_message', 'my_retrieve_password_message', 10, 4 );
function my_retrieve_password_message( $message, $key, $user_login, $user_data ) {
// Inizia con il contenuto predefinito.
$site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
$message = __( 'Qualcuno ha richiesto un reset della password per il seguente account:' ) . "\r\n\r\n";
/* traduttori: %s: nome del sito */
$message .= sprintf( __( 'Nome del sito: %s' ), $site_name ) . "\r\n\r\n";
/* traduttori: %s: nome utente */
$message .= sprintf( __( 'Username: %s' ), $user_login ) . "\r\n\r\n";
$message .= __( 'Se è stato un errore, ignora semplicemente questa email e non succederà nulla.' ) . "\r\n\r\n";
$message .= __( 'Per resettare la tua password, visita il seguente indirizzo:' ) . "\r\n\r\n";
$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
/*
* Se il problema persiste con questo filtro, rimuovi
* l'ultima riga sopra e usa la riga sotto rimuovendo
* "//" (che la commenta) e inserendo manualmente
* il dominio del tuo sito, evitando così la
* funzione network_site_url().
*/
// $message .= '<http://tuosito.com/wp-login.php?action=rp&key=' . $key . '&login=' . rawurlencode( $user_login ) . ">\r\n";
// Restituisci il messaggio filtrato.
return $message;
}
