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?
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();
}