Cum să aplici filtrul "retrieve_password_message"?

6 sept. 2014, 20:52:39
Vizualizări: 15.5K
Voturi: 4

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?

0
Toate răspunsurile la întrebare 3
0

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;
  }
);
4 apr. 2017 17:45:46
2

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;
}
11 sept. 2014 08:43:47
Comentarii

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/

hkchakladar hkchakladar
5 nov. 2017 20:28:32

Îmi pare rău pentru votul negativ, dar am vrut cu adevărat să ofer răspunsului lui @Toskan o șansă să ajungă în top - este un răspuns mult mai bun și folosește datele deja disponibile din filtru în loc să le reconstruiască.

squarecandy squarecandy
1 mai 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;

}

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.

6 sept. 2014 21:36:24
Comentarii

Te rog să notezi: nu l-am testat.

Domain Domain
6 sept. 2014 21:36:59

Te rog să explici ce face.

fuxia fuxia
7 sept. 2014 02:10:56

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

William William
7 sept. 2014 07:59:29

@toscho, am actualizat răspunsul cu explicații.

Domain Domain
7 sept. 2014 19:56:14

@William, ce anume cauți?

Domain Domain
7 sept. 2014 19:57:09

@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 } :-)

William William
8 sept. 2014 12:33:37
Arată celelalte 1 comentarii