web-dev-qa-db-fra.com

Comment rediriger le lien action = register de la page mot de passe perdu vers un autre lien?

J'ai une page d'inscription wordpress spécifique sur laquelle un nouvel utilisateur doit compléter son formulaire d'inscription. Toutefois, si quelqu'un clique sur le lien "mot de passe oublié" dans la section de connexion de mon site, puis clique sur s'inscrire, il pourra s'inscrire pour le site sans passer par le formulaire d'enregistrement habituel. Comment puis-je rediriger la page wp-login.php? Action = register vers sample.com/register?

Merci d'avance!

2
BentCircle

Accrochez-vous dans login_form_register et jetez les gens sur votre page d'inscription avec wp_redirect.

<?php
add_action( 'login_form_register', 'wpse45134_catch_register' );
/**
 * Redirects visitors to `wp-login.php?action=register` to 
 * `site.com/register`
 */
function wpse45134_catch_register()
{
    wp_redirect( home_url( '/register' ) );
    exit(); // always call `exit()` after `wp_redirect`
}

Vous pouvez également masquer le lien "enregistrer" sur cette page en détournant l'option user_can_register sur la page de connexion. Accrocher dans login_form_lostpassword et login_form_retrievepassword, à partir de là, ajoutez un filtre à pre_option_users_can_register.

<?php
add_action( 'login_form_lostpassword', 'wpse45134_filter_option' );
add_action( 'login_form_retrievepassword', 'wpse45134_filter_option' );
/**
 * Simple wrapper around a call to add_filter to make sure we only
 * filter an option on the login page.
 */
function wpse45134_filter_option()
{
    // use __return_zero because pre_option_{$opt} checks
    // against `false`
    add_filter( 'pre_option_users_can_register', '__return_zero' );
}

En tant que plugin .

5
chrisguitarguy