web-dev-qa-db-fra.com

Comment modifier le lien S'inscrire dans la page de connexion?

C’est probablement très simple, mais je voudrais ajouter un crochet au fichier functions.php de mon thème afin de changer le Register lien sur la page de connexion (wp-login.php).

Comment je ferais ça?

1
Steve Doran

Suivons le lapin blanc.

http://core.trac.wordpress.org/browser/tags/3.3.1/wp-login.php#L414

... ne peut pas être changé, c'est codé en dur. Cependant cela mène ici quand on clique dessus:

http://core.trac.wordpress.org/browser/tags/3.3.1/wp-login.php#L481

... qui possède un filtre wp_signup_location pour le multisite, qui ne se déclenchera jamais si votre site !is_multisite() ne se déclenche jamais. Si vous êtes multisite - arrêtez-vous ici.

add_filter( 'wp_signup_location', 'wpse_46848_Hijack_the_back' );
function wpse_46848_Hijack_the_back( $location ) {
    return 'my-registration-page-is-better.php';
}

Pas multisite, hein?

registration_redirect est ce qui se passe APRÈS L'ENREGISTREMENT, et pourtant il est appelé avant d'afficher la page d'enregistrement. Nous pouvons jouer de manière sale, y accrocher et diverger en un wp_redirect avec un exit() avant d'afficher quoi que ce soit de la page d'origine.

add_action( 'registration_redirect', 'wpse_46848_Hijack_the_back' );
function wpse_46848_Hijack_the_back( $redirect_to ) {
    wp_redirect( 'my-registration-page-is-better.php' );
    exit();
}

Notez que add_action et add_filter fonctionnent de la même manière (add_action appelle add_filter), et bien qu’il soit généralement déconseillé de les mélanger car la situation deviendra confuse, vous détournerez sémantiquement le filtre avec une action, pas un filtre (car vous ne retournez rien). Si vous préférez vous en tenir à strict: "un filtre est un filtre, une action est une action", procédez comme suit:

add_filter( 'registration_redirect', 'wpse_46848_Hijack_the_back' );
function wpse_46848_Hijack_the_back( $redirect_to ) {
    wp_redirect( 'my-registration-page-is-better.php' );
    return exit();
}
4
soulseekah