Cum pot modifica textul implicit al emailului pentru resetarea (pierderea) parolei?
Am găsit câteva întrebări similare aici, dar nu am reușit să aplic soluțiile care au fost oferite.
Emailul standard de resetare a parolei pe care WordPress îl trimite nu oferă un URL clickabil pentru utilizatorii care își resetează parola. Iată cum arată emailul curent:
Se pare că URL-ul site-ului (https://jewelbound.com) ar trebui să fie la sfârșitul mesajului, conectat cu "/wp-login.php?action......"
Vă rog să mă ajutați să știu cum să modific următorul cod șablon de email pentru a elimina URL-ul "https://jewelbound.com/" din partea de sus, să-l adaug la URL-ul furnizat în partea de jos și să-l transform într-un URL lung, conectat (și clickabil) care va permite utilizatorului să-și reseteze parola. Iată șablonul din fișierul meu wp-login.php:
$message = __( 'Cineva a solicitat o resetare a parolei pentru următorul cont:' ) . "\r\n\r\n";
/* translators: %s: numele site-ului */
$message .= sprintf( __( 'Nume Site: %s'), $site_name ) . "\r\n\r\n";
/* translators: %s: nume utilizator */
$message .= sprintf( __( 'Nume Utilizator: %s'), $user_login ) . "\r\n\r\n";
$message .= __( 'Dacă aceasta a fost o greșeală, ignorați acest email și nu se va întâmpla nimic.' ) . "\r\n\r\n";
$message .= __( 'Pentru a vă reseta parola, vizitați următoarea adresă:' ) . "\r\n\r\n";
$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
/* translators: Subiectul emailului de resetare a parolei. %s: Numele site-ului */
$title = sprintf( __( '[%s] Resetare Parolă' ), $site_name );
Mulțumesc anticipat oricui este dispus să ajute!

Pentru a răspunde la întrebarea ta specifică, "Cum pot modifica textul implicit al email-ului de resetare (pierdere) a parolei", răspunsul ar fi să folosești filtrul retrieve_password_message
. Și în final, aceasta ar putea fi o soluție la problema ta.
Dar cred că trebuie să aprofundezi puțin pentru a înțelege ce se întâmplă cu adevărat. În întrebarea ta ai menționat modificarea "textului implicit al email-ului de resetare a parolei", dar ceea ce ai acum nu este chiar versiunea implicită. Dacă ar fi fost, URL-ul ar fi fost într-un singur bloc, nu separat cum apare acum.
Aș începe prin a dezactiva toate plugin-urile și a trece la tema implicită WordPress, în locul temei curente. Cu alte cuvinte, o instalare foarte simplă, fără interferențe. Încearcă atunci. Dacă nu obții același rezultat, înseamnă că ceva în sistem modifică URL-ul. Există filtre precum retrieve_password_message
și network_site_url
care ar putea permite unor funcții de filtrare să cauzeze problema ta. Dezactivarea plugin-urilor și utilizarea unei teme de bază fără modificări ar trebui să te ajute să identifici dacă acesta este cazul.
În final, dacă nu reușești să identifici cauza, rescrierea întregului conținut al mesajului folosind filtrul retrieve_password_message
îți va oferi o soluție temporară, indiferent de problema inițială. Filtrul de mai jos reproduce mesajul implicit. Include și o soluție alternativă pentru generarea URL-ului, în cazul în care o funcție atașată la network_site_url
este problema. Dacă este cazul, folosește varianta alternativă și introdu manual domeniul, așa cum este indicat.
add_filter( 'retrieve_password_message', 'my_retrieve_password_message', 10, 4 );
function my_retrieve_password_message( $message, $key, $user_login, $user_data ) {
// Începe cu conținutul implicit.
$site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
$message = __( 'Cineva a solicitat resetarea parolei pentru următorul cont:' ) . "\r\n\r\n";
/* translators: %s: numele site-ului */
$message .= sprintf( __( 'Numele site-ului: %s' ), $site_name ) . "\r\n\r\n";
/* translators: %s: numele de utilizator */
$message .= sprintf( __( 'Nume de utilizator: %s' ), $user_login ) . "\r\n\r\n";
$message .= __( 'Dacă aceasta a fost o greșeală, poți ignora acest email și nimic nu se va întâmpla.' ) . "\r\n\r\n";
$message .= __( 'Pentru a-ți reseta parola, vizitează următoarea adresă:' ) . "\r\n\r\n";
$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
/*
* Dacă problema persistă și cu acest filtru, elimină
* linia de mai sus și folosește linia de mai jos
* eliminând "//" (care o comentează) și introdu
* manual domeniul site-ului tău, ocolind astfel
* funcția network_site_url().
*/
// $message .= '<http://siteultau.com/wp-login.php?action=rp&key=' . $key . '&login=' . rawurlencode( $user_login ) . ">\r\n";
// Returnează mesajul filtrat.
return $message;
}
