Come creare un link per il reset della password?
Ho configurato il flusso di registrazione in modo che i miei utenti debbano compilare un modulo di registrazione Gravity Forms e poi attivare il loro account tramite un link in una email. Il link dell'email li indirizza a una pagina che comunica all'utente se la registrazione è andata a buon fine o meno. In caso di successo, vorrei che i miei utenti cliccassero su un link di reset della password nella pagina di attivazione per impostare la loro password. Continuo a ricevere un messaggio di link non valido quando costruisco il link di reset. Come posso costruire un link di reset password valido? Ecco quello che ho finora:
<?php
global $gw_activate_template;
extract( $gw_activate_template->result );
$url = is_multisite() ? get_blogaddress_by_id( (int) $blog_id ) : home_url('', 'http');
$user = new WP_User( (int) $user_id );
?>
<h2><?php _e('Il tuo account è ora attivo!'); ?></h2>
<div id="signup-welcome">
<p><span class="h3"><?php _e('Nome utente:'); ?></span> <?php echo $user->user_login ?></p>
<p>Per impostare la tua password, seleziona il seguente link: <a href="http://example.com/wp-login.php?action=rp&key=<?php echo $gw_activate_template->get_activation_key(); ?>&login=<?php echo $user->user_login; ?>" >http://example.com/wp-login.php?action=rp&key=<?php echo $gw_activate_template->get_activation_key(); ?>&login=<?php echo $user->user_login; ?></a></p>
</div>
<?php if ( $url != network_home_url('', 'http') ) : ?>
<p class="view"><?php printf( __('Il tuo account è ora attivato. <a href="%1$s">Visualizza il sito</a> o <a href="%2$s">Accedi</a>'), $url, $url . 'wp-login.php' ); ?></p>
<?php else: ?>
<p class="view"><?php printf( __('Il tuo account è ora attivato. <a href="%1$s">Accedi</a> o torna alla <a href="%2$s">homepage</a>.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?></p>
<?php endif; ?>

Dopo molte ricerche, alla fine ho esaminato il file core di WordPress wp_login.php sperando che WP mostrasse come lo fanno in modo non oscuro. Dalle informazioni intorno alla riga 331 (WP 4.6.1), ho messo insieme il seguente codice.
<?php
global $gw_activate_template;
extract( $gw_activate_template->result );
$url = is_multisite() ? get_blogaddress_by_id( (int) $blog_id ) : home_url('', 'http');
$user = new WP_User( (int) $user_id );
$adt_rp_key = get_password_reset_key( $user );
$user_login = $user->user_login;
$rp_link = '<a href="' . network_site_url("wp-login.php?action=rp&key=$adt_rp_key&login=" . rawurlencode($user_login), 'login') . '">' . network_site_url("wp-login.php?action=rp&key=$adt_rp_key&login=" . rawurlencode($user_login), 'login') . '</a>';
if ( is_wp_error( $key ) ) {
return $key;
}
?>
<h2><?php _e('Il tuo account è ora attivo!'); ?></h2>
<div id="signup-welcome">
<p><span class="h3"><?php _e('Username:'); ?></span> <?php echo $user->user_login ?></p>
<p>Per impostare la tua password, seleziona il seguente link: <?php echo $rp_link; ?></p>
</div>
L'elemento importante per costruire il link è la chiave che viene generata da get_password_reset_key( $user ); Questa è una chiave che viene memorizzata nel database e permette all'utente $user di cambiare la password. Ho visto un sito che la definisce come un cookie; tuttavia questa è una definizione ampia di "cookie" perché non viene memorizzato nulla sul computer dell'utente. La chiave è memorizzata nel database e collegata all'account utente.

Non sono sicuro a quale link tu stia cercando di fare riferimento e come si colleghi alle specifiche di Gravity Forms (le domande su di esso sono meglio rivolte a loro :)
Nel caso nativo di WP, il metodo API per generare il link per la password dimenticata viene prodotto così wp_lostpassword_url( home_url() )
(l'argomento di reindirizzamento è opzionale) e l'URL risultante ha il seguente formato:
http://example.com/wp-login.php?action=lostpassword&redirect_to=http://example.com
.

Sto cercando di creare un link come questo esempio: http://example.com/wp-login.php?action=rp&key=WhatKey&login=user_login
Preferirei non utilizzare il link per la password dimenticata perché richiede all'utente di inserire un indirizzo email al quale viene inviato il link per reimpostare la password. Vorrei che il mio link portasse direttamente alla pagina di reimpostazione della password.
