Je voudrais créer mon propre formulaire et page de réinitialisation de mot de passe, je veux dire cette page:
J'ai déjà créé un modèle de page pour le formulaire de réinitialisation du mot de passe, le code:
<?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(); ?>
Sur le formulaire de soumission, je déclenche une fonction utilisant Ajax pour valider ces mots de passe et les modifier si tout va bien, tout va bien.
Comment les gens peuvent-ils voir cette page? il y a fondamentalement le demande une réinitialisation de mot de passe en utilisant le formulaire d'adresse électronique} qui ressemble à ceci:
Une fois l'e-mail reçu, l'utilisateur peut cliquer sur un lien qui ressemble à ceci:
https://example.com/wp-login.php?action=rp&key=tkFUnvcJmhu30nRxqjpt&login=example%gmail.com
Maintenant, dans les fonctions PHP, j'ai utilisé cette fonction pour rediriger les utilisateurs vers ma page personnalisée avec les variables $_GET
mais cela ne fonctionne pas, j'ai besoin de votre aide s'il vous plaît! voici le code:
/*
* 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' );
Vous pouvez ajouter ce qui suit à votre functions.php
pour obtenir ce que vous recherchez. L'action init
ne semble pas se déclencher à temps pour ce que vous recherchez.
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;
}