web-dev-qa-db-fra.com

rediriger wp-login.php vers une autre page

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?

3
4m1nh4j1

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 );
}
2
thirdender

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]

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

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 :)

0
sMyles