Je voudrais rediriger cette page wp-login.php
à la page /login
. Ainsi, lorsqu'un utilisateur clique sur un lien comme celui-ci <a href="/wp-login.php">login</a>
, wordpress le redirigera vers /register
.
J'ai trouvé cette fonction et l'ai modifiée:
add_action('init','custom_login');
function custom_login(){
global $pagenow;
if (( 'wp-login.php' == $pagenow ) && (!is_user_logged_in())) {
wp_redirect('/login');
exit();
}
Je ne suis pas bon avec le codage wordpress.
La redirection fonctionne bien, mais l'authentification semble être rompue. Lorsque je saisis mon identifiant/mon mot de passe, la même page (/login
) est rechargée sans être authentifiée.
Toute suggestion pour corriger la fonction pour la redirection?
Si vous ne vous souciez que des liens de connexion affichés sur vos pages, vous devriez pouvoir modifier l’URL en reliant le filtre login_url
. Cela ne redirigera pas un utilisateur qui tape http://MYSITE/wp-login.php
directement dans son navigateur, mais cela affectera les liens de connexion affichés sur tout votre site.
Ceci est l'exemple de code de la page login_url
Codex :
add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
return home_url( '/my-login-page/?redirect_to=' . $redirect );
}
1. Modifiez votre fichier .htaccess
- ajoutez cette ligne après la règle de réécriture index.php
:
RewriteRule ^index\.php$ – [L]<br />
RewriteRule ^yoursecretpath$ wp-login.php [L,NC,QSA]
où yoursecretpath
est votre chemin vers le panneau d'administration.
2. Modifiez la fonction login_header
dans le fichier wp-login.php
- ajoutez ce code juste avant la ligne 59 (où la balise de type de document HTML commence, afin d'éviter que les en-têtes n'envoient une erreur):
<?php $uri = $_SERVER['REQUEST_URI']; if(stripos($uri, ‘wp-login’) or stripos($uri, ‘wp-admin’) && !stripos($GLOBALS["HTTP_COOKIE"], ‘wordpress_logged_in’)) { header("Location: ".get_site_url().'/yoursecretpath' ); exit(); } ?>
En fait, j'ai déjà un plugin open source qui le fait déjà:
https://github.com/tripflex/wp-login-flow
Il a été créé pour demander aux utilisateurs de vérifier leurs courriels, mais vous pouvez désactiver cette fonctionnalité et utiliser simplement la fonctionnalité de réécriture, qui est fonctionnelle dans la dernière version disponible sur le référentiel WordPress (1.0.0).
Vous pouvez regarder le code pour voir comment je gère les réécritures:
https://github.com/tripflex/wp-login-flow/blob/master/classes/rewrite.php#L312
J'y travaille actuellement pour disposer de mises à jour et de correctifs majeurs, mais pour l'instant, la version 1.0.0 fonctionne parfaitement pour les réécritures. Prendre plaisir :)