Lipsă URL în emailul de resetare a parolei WordPress
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;
}

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.

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?

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

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);

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 );

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.

Am avut această problemă și am procedat similar cu Travis...
- faceți clic dreapta pe mesajul de e-mail
- selectați "view source" (vizualizare sursă)
- 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ă:)
- lipiți-l în caseta domeniului și voilà.
Sper că vă ajută și pe voi :)
