URL mancante nell'email di reset della password

16 nov 2016, 13:01:33
Visualizzazioni: 13.6K
Voti: 9

Dalla pagina di login di wp admin clicco per reimpostare la password (non dal tema, direttamente su wp). Ricevo l'email ma non contiene alcun URL da cliccare. I plugin sono disabilitati. Cosa dovrei fare?

4
Commenti

allora cosa invia?

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

Invia un'email che informa che qualcuno ha richiesto una nuova password e che devo verificare cliccando sul seguente link. Ma non c'è alcun link, solo una riga vuota.

tt24 tt24
24 nov 2016 19:58:28

Ho esattamente lo stesso problema da anni: come mai WordPress non l'ha ancora risolto? Non è così diffuso?

CDuv CDuv
13 mag 2019 13:50:15

Questo bug esiste ancora in WordPress. Non ho idea del perché non sia stato risolto.

Feriman Feriman
1 dic 2019 20:13:17
Tutte le risposte alla domanda 5
4
10

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;

}
7 nov 2017 17:03:22
Commenti

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.

Amit Joshi Amit Joshi
11 gen 2020 16:17:21

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?

Amit Joshi Amit Joshi
11 gen 2020 16:31:19

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

Luke Seall Luke Seall
13 gen 2020 12:02:50

Perché i caratteri maggiore e minore stanno causando un problema? Non ho mai visto succedere una cosa simile prima...

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

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);
13 mag 2019 16:51:49
0

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 );
16 nov 2016 15:43:37
0

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.

24 mag 2019 22:07:30
0

Ho avuto questo problema e ho fatto qualcosa di simile a Travis...

  1. fai clic destro sul messaggio email
  2. seleziona "Visualizza sorgente"
  3. copia il link che vedi sotto le parole "Per reimpostare la password, visita il seguente indirizzo:"
  4. incollalo nella casella del tuo dominio ed ecco fatto.

spero che questo aiuti anche :)

7 feb 2020 14:35:31