Cum să aplici filtrul "retrieve_password_message"?
Aș dori să schimb conținutul email-ului de resetare a parolei pe care WordPress îl trimite cu ceva mai prietenos.
Încerc să folosesc filtrul "retrieve_password_message" dar nu reușesc să îl implementez corect.
Poate cineva să posteze un exemplu de cod?
răspunsurile date au intenții bune. Dar nu sunt bune. Există mai mulți parametri pentru apelul funcției de filtrare, 4 pentru a fi exact.
asta a funcționat pentru mine pentru mesaj (am vrut să înlocuiesc numele de utilizator cu adresa de email a utilizatorului)
reține că avem o pagină multi-site. Poți dori să înlocuiești network_site_url cu get_site_url()
de obicei în fișierul tău functions.php
din 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 = "Cineva a solicitat resetarea parolei pentru următorul cont:
" . sprintf(__('%s'), $user_data->user_email) . "
Dacă aceasta a fost o greșeală, ignoră acest email și nu se va întâmpla nimic.
Pentru a-ți reseta parola, accesează următoarea adresă:
" . '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n" . "
Dacă ai alte probleme, te rugăm să ne contactezi la help@myapp.com
Echipa Myapp";
return $message;
}
bonus: schimbă subiectul email-ului
add_filter( 'retrieve_password_title',
function( $title )
{
$title = __( 'Resetare parolă pentru myapp.org' );
return $title;
}
);

Am crezut că acest fragment de cod ar putea fi util pentru cei care doresc să personalizeze e-mailul de resetare a parolei.
//* E-mail de activare pentru resetarea parolei -> Conținut
add_filter( 'retrieve_password_message', 'wpse_retrieve_password_message', 10, 2 );
function wpse_retrieve_password_message( $message, $key ){
$user_data = '';
// Dacă nu este trimisă nicio valoare, returnează false
if( ! isset( $_POST['user_login'] ) ){
return '';
}
// Preia informațiile utilizatorului din 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;
// Configurarea mesajului pentru resetarea parolei
$message = "Se pare că doriți să vă resetați parola!\n\n";
$message .= "Vă rugăm să faceți clic pe acest 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 .= 'Cu stimă,<br/>Echipa Dream Team';
// Returnează mesajul complet pentru resetarea parolei
return $message;
}

Nu este necesar să verifici datele din $_POST
pentru a obține user_login. Deja ai user_login
în parametrul hook-ului. Folosește al 3-lea parametru în loc de al 2-lea. https://developer.wordpress.org/reference/hooks/retrieve_password_message/

add_filter("retrieve_password_message", "your_custom_message", 99, 2);
function your_custom_message($message, $key) {
$message = "your_custom_message";
return $message;
}
Acesta este un exemplu de utilizare a cârligului (hook) de filtrare 'retrieve_password_message'.
Acesta este folosit pentru a suprascrie corpul email-ului pe care îl primește un utilizator atunci când solicită resetarea parolei.

Salut, mulțumesc pentru contribuție :-) Te rog să adaugi codul pentru link-ul de resetare a parolei.

@WisdmLabs Link-ul de resetare a parolei lipsește din fragmentul tău. http://exmple.com/wp-login.php?action=rp&key={ the key } &login={ the username } :-)
