¿Cómo crear un enlace para restablecer la contraseña?
Tengo el flujo de registro configurado para que mis usuarios tengan que completar un formulario de registro de usuario de Gravity Forms y luego activar su cuenta a través de un enlace en un correo electrónico. El enlace del correo electrónico los envía a una página que informa al usuario si su registro ha sido exitoso o ha fallado. Al tener éxito, me gustaría que mis usuarios hagan clic en un enlace de restablecimiento de contraseña en la página de activación exitosa para establecer su contraseña. Sigo recibiendo un mensaje de enlace inválido cuando construyo el enlace de restablecimiento. ¿Cómo construyo un enlace válido de restablecimiento de contraseña? Esto es lo que tengo hasta ahora:
<?php
// Variable global para la plantilla de activación
global $gw_activate_template;
extract( $gw_activate_template->result );
// Obtener la URL del sitio
$url = is_multisite() ? get_blogaddress_by_id( (int) $blog_id ) : home_url('', 'http');
$user = new WP_User( (int) $user_id );
?>
<h2><?php _e('¡Tu cuenta está ahora activa!'); ?></h2>
<div id="signup-welcome">
<p><span class="h3"><?php _e('Usuario:'); ?></span> <?php echo $user->user_login ?></p>
<p>Para establecer tu contraseña, selecciona el siguiente enlace: <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( __('Tu cuenta está ahora activada. <a href="%1$s">Ver el sitio</a> o <a href="%2$s">Iniciar sesión</a>'), $url, $url . 'wp-login.php' ); ?></p>
<?php else: ?>
<p class="view"><?php printf( __('Tu cuenta está ahora activada. <a href="%1$s">Iniciar sesión</a> o volver a la <a href="%2$s">página principal</a>.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?></p>
<?php endif; ?>

Después de mucha investigación, finalmente me dirigí a examinar el archivo principal de WordPress wp_login.php con la esperanza de que WP mostrara cómo lo hacen de una manera no obtusa. A partir de la información alrededor de la línea 331 (WP 4.6.1), reuní el siguiente código.
<?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('¡Tu cuenta ya está activa!'); ?></h2>
<div id="signup-welcome">
<p><span class="h3"><?php _e('Nombre de usuario:'); ?></span> <?php echo $user->user_login ?></p>
<p>Para establecer tu contraseña, selecciona el siguiente enlace: <?php echo $rp_link; ?></p>
</div>
Lo importante para construir el enlace es la clave que se genera mediante get_password_reset_key( $user ); Esta es una clave que se almacena en la base de datos y permite que el $user pueda cambiar su contraseña. Vi un sitio web que se refiere a ella como una cookie; sin embargo, esto utiliza una definición amplia de "cookie" porque no se almacena nada en el ordenador del usuario. La clave se almacena en la base de datos y está vinculada a la cuenta de usuario.

No estoy seguro de qué enlace estás intentando construir y cómo se relaciona con los detalles específicos de Gravity Forms (las preguntas sobre esto son mejor dirigidas a ellos :)
En el caso nativo de WordPress, el método API para generar el enlace de contraseña perdida se produce así wp_lostpassword_url( home_url() )
(el argumento de redirección es opcional) y la URL resultante tiene el siguiente formato:
http://ejemplo.com/wp-login.php?action=lostpassword&redirect_to=http://ejemplo.com
.

Estoy buscando poner un enlace como este ejemplo: http://example.com/wp-login.php?action=rp&key=WhatKey&login=user_login
Preferiría no usar el enlace de contraseña perdida porque hace que el usuario introduzca una dirección de correo electrónico a la que se envía el enlace para restablecer la contraseña. Quiero que mi enlace vaya directamente a la página de restablecimiento de contraseña.
