我设置了注册工作流,因此我的用户必须填写重力表单用户注册表单,然后通过电子邮件中的链接激活他们的帐户。电子邮件链接会将他们发送到一个页面,告诉用户他们的注册是成功还是失败。成功后,我希望我的用户单击激活成功页面上的密码重置链接来设置他们的密码。构造重置链接时,我不断收到无效链接消息。如何构造有效的密码重置链接??以下是我目前掌握的情况:
<?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(\'Your account is now active!\'); ?></h2>
<div id="signup-welcome">
<p><span class="h3"><?php _e(\'Username:\'); ?></span> <?php echo $user->user_login ?></p>
<p>To set your password, select the following 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( __(\'Your account is now activated. <a href="%1$s">View the site</a> or <a href="%2$s">Log in</a>\'), $url, $url . \'wp-login.php\' ); ?></p>
<?php else: ?>
<p class="view"><?php printf( __(\'Your account is now activated. <a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.\' ), network_site_url(\'wp-login.php\', \'login\'), network_home_url() ); ?></p>
<?php endif; ?>
最合适的回答,由SO网友:ermSO 整理而成
经过大量研究,我终于开始检查WordPress核心文件wp\\u登录。php希望WP能以一种非迟钝的方式展示他们是如何做到这一点的。根据第331行(WP 4.6.1)周围的信息,我整理了以下代码。
<?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(\'Your account is now active!\'); ?></h2>
<div id="signup-welcome">
<p><span class="h3"><?php _e(\'Username:\'); ?></span> <?php echo $user->user_login ?></p>
<p>To set your password, select the following link: <?php echo $rp_link; ?></p>
</div>
构建链接的重要内容是由get\\u password\\u reset\\u key($user)组合在一起的密钥;这是存储在数据库中的密钥,允许$用户更改其密码。我看到一个网站将其称为cookie;然而,这使用了“cookie”的松散定义,因为用户计算机上没有存储任何内容。密钥存储在数据库中并链接到用户帐户。