URL mancante nell'email di reset della password
Il problema sono i caratteri <
e >
che circondano l'URL di reset in wp-login.php
. Puoi rimuoverli utilizzando il filtro retrieve_password_message nel file functions.php
del tuo tema come mostrato di seguito:
add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4);
function mapp_custom_password_reset($message, $key, $user_login, $user_data ) {
$message = "Qualcuno ha richiesto un reset della password per il seguente account:
" . sprintf(__('%s'), $user_data->user_email) . "
Se questo è stato un errore, ignora semplicemente questa email e non succederà nulla.
Per resettare la tua password, visita il seguente indirizzo:
" . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";
return $message;
}

cosa rappresentano 99 e 4 nella riga sottostante? Qualcuno può spiegarmelo? add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4); la risposta sopra funziona per me ma non capisco gli ultimi 2 parametri.

cosa rappresentano 99 e 4 nella riga sottostante? Qualcuno può spiegarmelo? add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4); la risposta sopra funziona per me ma non capisco gli ultimi 2 parametri e come posso ottenerli per passarli al filtro?

Il 99 rappresenta la priorità e il 4 è il numero di argomenti che verranno passati alla funzione callback - https://developer.wordpress.org/plugins/hooks/actions/#additional-parameters

Se vuoi solo rimuovere le parentesi angolari aggiunte da WordPress ma lasciare il resto del messaggio generato invariato, aggiungi il seguente codice al file functions.php
del tuo tema WordPress (ad esempio wp-content/themes/some_awesome_theme/functions.php
).
/**
* Rimuove le parentesi angolari (caratteri < e >) attorno agli URL in una stringa data
*
* @param string $string La stringa da cui rimuovere eventuali parentesi angolari
*
* @return string $string dove eventuali parentesi angolari attorno a un URL sono state rimosse.
*/
function remove_angle_brackets_around_url($string)
{
return preg_replace('/<(' . preg_quote(network_site_url(), '/') . '[^>]*)>/', '\1', $string);
}
// Applica la funzione remove_angle_brackets_around_url() al messaggio di "recupero password":
add_filter('retrieve_password_message', 'remove_angle_brackets_around_url', 99, 1);

Dai un'occhiata al wp-login.php
su GitHub.
I blocchi predefiniti appaiono così:
// Ridefinire user_login assicura che restituiamo il caso corretto nell'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 = __('Qualcuno ha richiesto un reset della password per il seguente account:') . "\r\n\r\n";
$message .= network_home_url( '/' ) . "\r\n\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
$message .= __('Se questo è stato un errore, ignora semplicemente questa email e non succederà nulla.') . "\r\n\r\n";
$message .= __('Per reimpostare la tua password, visita il seguente indirizzo:') . "\r\n\r\n";
$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";
Dovresti essere in grado di filtrare il messaggio di reset della password con 'retrieve_password_message'
e modificarlo secondo le tue esigenze.
$message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );

Ho avuto questo problema e ho voluto condividere come l'ho risolto qui.
Ho aperto l'email e sulla destra, dove normalmente vedi l'orario in cui hai ricevuto l'email, ci saranno tre puntini.
Clicca su di essi e poi seleziona "mostra originale"
Da lì potrai vedere il codice dell'email. Cerca la parte dell'email dove dice che dovresti cliccare sul link.
Copia il link che si trova tra i segni < >. Incollalo nel tuo browser e voilà, potrai effettuare il reset.

Ho avuto questo problema e ho fatto qualcosa di simile a Travis...
- fai clic destro sul messaggio email
- seleziona "Visualizza sorgente"
- copia il link che vedi sotto le parole "Per reimpostare la password, visita il seguente indirizzo:"
- incollalo nella casella del tuo dominio ed ecco fatto.
spero che questo aiuti anche :)
