我想创建自己的重置密码表单和页面,我指的是此页面:
我已经为重置密码表单创建了一个页面模板,代码为:
<?php
/*
* Template Name: Page - Reset Password
*/
if( !is_user_logged_in() ) {
wp_redirect( site_url( \'login\' ) );
}
get_header();
?>
<div id="content" class="content-area" role="main">
<div class="forms-wrapper">
<div class="form-reset-password-wrapper">
<h1>Reset your password</h1>
<form id="form-reset-password" name="resetpassform" class="form-reset-password" action="<?php echo site_url( \'/wp-login.php?action=resetpass\', \'https\' ); ?>" method="post" autocomplete="off">
<input type="hidden" id="user_login" value="<?php echo $_GET[\'login\']; ?>" autocomplete="off">
<p class="form-row">
<label for="user_pass">New password
<input type="password" name="user_pass" id="user_pass">
</p>
<p class="form-row">
<label for="user_pass_confirm">Confirm new password
<input type="password" name="user_pass_confirm" id="user_pass_confirm">
</p>
<p class="reset-password-submit">
<input type="submit" id="reset-password-btn" class="reset-password-btn" value="Submit"/>
</p>
<div class="form-reset-password-errors"></div>
</form>
</div>
</div>
</div>
<?php get_footer(); ?>
这就是它的样子:
在表单提交中,我使用Ajax启动一个函数来验证这些密码,并在一切顺利的情况下对其进行更改,目前为止一切顺利。
How do people get to see this page? 基本上是使用电子邮件地址表单请求密码重置,如下所示:
收到电子邮件后,用户可以单击类似以下内容的链接:
https://example.com/wp-login.php?action=rp&key=tkFUnvcJmhu30nRxqjpt&login=example%gmail.com
现在,在PHP函数中,我使用此函数将用户重定向到我的自定义页面
$_GET
变量,但它不起作用,我需要你的帮助!代码如下:
/*
* Redirect to custom reset password page
*/
function override_reset_password_form_redirect() {
$action = isset( $_GET[\'action\'] ) ? $_GET[\'action\'] : \'\';
$key = isset( $_GET[\'key\'] ) ? $_GET[\'key\'] : \'\';
$login = isset( $_GET[\'login\'] ) ? $_GET[\'login\'] : \'\';
if ( \'wp-login.php\' === $GLOBALS[\'pagenow\'] && ( \'rp\' == $action || \'resetpass\' == $action ) ) {
wp_redirect( site_url( \'/reset-password/\' ) . \'?key=\' . $key . \'&login=\' . $login );
exit;
}
}
add_action( \'init\', \'override_reset_password_form_redirect\' );
最合适的回答,由SO网友:Liam Stewart 整理而成
您可以将以下内容添加到functions.php
实现你的目标。行动init
似乎没有及时为您寻找的内容开火。
if($_GET[\'action\']===\'rp\' && strpos($_SERVER[\'REQUEST_URI\'],\'wp-login.php\')) {
$key = isset( $_GET[\'key\'] ) ? $_GET[\'key\'] : \'\';
$login = isset( $_GET[\'login\'] ) ? $_GET[\'login\'] : \'\';
wp_redirect( site_url( \'/reset-password/\' ) . \'?key=\' . $key . \'&login=\' . $login );
exit;
}