Lipsă URL în emailul de resetare a parolei WordPress

16 nov. 2016, 13:01:33
Vizualizări: 13.6K
Voturi: 9

Din pagina de login wp-admin am dat click pe resetare parolă (nu din tema, direct din WordPress). Am primit emailul dar nu conține niciun URL pe care să dau click. Pluginurile sunt dezactivate. Ce ar trebui să fac?

4
Comentarii

atunci ce trimite?

Third Essential Designer Third Essential Designer
16 nov. 2016 15:22:37

Trimite un email despre faptul că cineva a solicitat o parolă nouă și trebuie să verific prin clic pe linkul următor. Dar nu există niciun link, doar o linie goală.

tt24 tt24
24 nov. 2016 19:58:28

Am exact aceeași problemă de ani de zile: cum se face că WordPress nu a rezolvat-o până acum? Nu este atât de răspândită?

CDuv CDuv
13 mai 2019 13:50:15

Acest bug încă există în WordPress. Nu am idee de ce nu a fost rezolvat.

Feriman Feriman
1 dec. 2019 20:13:17
Toate răspunsurile la întrebare 5
4
10

Problema este cu caracterele < și > care încadrează URL-ul de resetare în wp-login.php. Le puteți elimina folosind filtrul retrieve_password_message în fișierul functions.php al temei, după cum urmează:

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ă, ignorați acest email și nimic nu se va întâmpla.

Pentru a vă reseta parola, accesați următoarea adresă:

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


    return $message;

}
7 nov. 2017 17:03:22
Comentarii

ce reprezintă 99 și 4 în linia de mai jos? poate cineva să-mi explice? add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4); răspunsul de mai sus funcționează pentru mine, dar nu înțeleg ultimii 2 parametri.

Amit Joshi Amit Joshi
11 ian. 2020 16:17:21

ce reprezintă 99 și 4 în linia de mai jos? poate cineva să-mi explice? add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4); răspunsul de mai sus funcționează pentru mine, dar nu înțeleg ultimii 2 parametri și cum pot să-i obțin pentru a-i transmite în filter?

Amit Joshi Amit Joshi
11 ian. 2020 16:31:19

99 reprezintă prioritatea, iar 4 este numărul de argumente care vor fi transmise funcției de callback - https://developer.wordpress.org/plugins/hooks/actions/#additional-parameters

Luke Seall Luke Seall
13 ian. 2020 12:02:50

De ce cauzează caracterele mai mare decât și mai mic decât probleme? Nu am mai întâlnit niciodată așa ceva...

Andrew Schultz Andrew Schultz
11 mar. 2020 16:39:13
0

Dacă doriți să eliminați doar parantezele unghiulare adăugate de WordPress, lăsând restul mesajului generat neschimbat, adăugați următoarele în fișierul functions.php al temei WordPress (de ex. wp-content/themes/o_tema_minunata/functions.php).

/**
 * Elimină parantezele unghiulare (caracterele < și >) din jurul URL-urilor dintr-un șir dat
 *
 * @param string $string    Șirul din care se elimină potențiale paranteze unghiulare
 *
 * @return string    $string fără paranteze unghiulare în jurul URL-urilor.
 */
function elimina_paranteze_unghiulare_in_jurul_url($string)
{
    return preg_replace('/<(' . preg_quote(network_site_url(), '/') . '[^>]*)>/', '\1', $string);
}

// Aplică funcția elimina_paranteze_unghiulare_in_jurul_url() pe mesajul "recuperare parolă":
add_filter('retrieve_password_message', 'elimina_paranteze_unghiulare_in_jurul_url', 99, 1);
13 mai 2019 16:51:49
0

Verifică wp-login.php pe GitHub.

Blocurile implicite arată astfel:

// Redefinirea user_login asigură returnarea literei corecte în email.
$user_login = $user_data->user_login;
$user_email = $user_data->user_email;
$key = get_password_reset_key( $user_data );
if ( is_wp_error( $key ) ) {
    return $key;
}
$message = __('Cineva a solicitat resetarea parolei pentru următorul cont:') . "\r\n\r\n";
$message .= network_home_url( '/' ) . "\r\n\r\n";
$message .= sprintf(__('Nume utilizator: %s'), $user_login) . "\r\n\r\n";
$message .= __('Dacă aceasta a fost o greșeală, ignorați acest email și nimic nu se va întâmpla.') . "\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";

Ar trebui să poți filtra mesajul de resetare a parolei cu 'retrieve_password_message' și să îl modifici în funcție de nevoile tale.

$message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );
16 nov. 2016 15:43:37
0

Am avut această problemă și am vrut să împărtășesc cum am rezolvat-o aici.

Am deschis e-mailul și în dreapta, unde ar fi afișat ora la care ați primit e-mailul, vor fi trei puncte.

Faceți clic pe ele și apoi pe "afișează original"

De acolo veți vedea codul e-mailului. Căutați partea din e-mail unde este menționat că ar trebui să faceți clic pe link.

Copiați link-ul care se află între semnele < >. Lipiți-l în browser și voila, veți putea reseta parola.

24 mai 2019 22:07:30
0

Am avut această problemă și am procedat similar cu Travis...

  1. faceți clic dreapta pe mesajul de e-mail
  2. selectați "view source" (vizualizare sursă)
  3. copiați link-ul pe care îl vedeți sub cuvintele "To reset your password, visit the following address:" (Pentru a vă reseta parola, vizitați următoarea adresă:)
  4. lipiți-l în caseta domeniului și voilà.

Sper că vă ajută și pe voi :)

7 feb. 2020 14:35:31