2009-12-29 5 views
17

J'ai un site Web, avec un système utilisateur. Je veux intégrer le système d'utilisateur de wordpress dans ce site Web, mais je veux toujours utiliser les pages d'inscription/de connexion du site Web. Je ne veux pas que quelqu'un puisse se connecter ou s'inscrire en utilisant les formulaires de connexion ou d'inscription de Wordpress. Au lieu de cela, quand ils essaient d'accéder aux pages de connexion/inscription dans Wordpress, je veux que ces pages les redirigent vers mes propres pages de connexion/inscription.Rediriger la page Connexion/Inscription de Wordpress vers une page de connexion/d'enregistrement personnalisée

Y at-il un moyen de le faire? J'ai essayé Google, mais tout ce que j'ai pu trouver était la redirection APRÈS que l'utilisateur se connecte ou s'enregistre, ce qui n'est pas ce que je veux.

Merci d'avance.

Répondre

23

Pour cela, vous devez rediriger la page de connexion/enregistrement vers vos pages personnalisées. Alors, écrivez ce code dans votre fichier functions.php Sous votre dossier de thème activé. Transmettez votre chemin de page personnalisé en tant qu'argument.

add_action('init','possibly_redirect'); 

function possibly_redirect(){ 
global $pagenow; 
if('wp-login.php' == $pagenow) { 
    wp_redirect('http://google.com/'); 
    exit(); 
} 
} 
+0

Où dois-je enregistrer l'appel add_action? Où est-ce que j'appelle ça? excusez-moi car je suis un développeur .Net. –

+0

Vous avez deux options. Soit jeter le code ci-dessus dans un plugin ou créer un functions.php dans le dossier de vos thèmes et ajouter ce qui précède. – nickohrn

+5

Il convient d'ajouter que cette opération désactive la possibilité de se déconnecter, sauf si elle est explicitement effectuée à partir de la page de destination. – thinice

1

Vous pourriez être en mesure de verrouiller sur le crochet login_head et émettre une redirection là.

17

Pour restreindre l'accès direct uniquement pour 'wp-login.php', sans POST ou GET demande (utile pour les formulaires de connexion ajax personnalisé), utiliser la fonction avancée:

function possibly_redirect(){ 
    global $pagenow; 
    if('wp-login.php' == $pagenow) { 
    if (isset($_POST['wp-submit']) || // in case of LOGIN 
     (isset($_GET['action']) && $_GET['action']=='logout') || // in case of LOGOUT 
     (isset($_GET['checkemail']) && $_GET['checkemail']=='confirm') || // in case of LOST PASSWORD 
     (isset($_GET['checkemail']) && $_GET['checkemail']=='registered')) return; // in case of REGISTER 
    else wp_redirect(home_url()); // or wp_redirect(home_url('/login')); 
    exit(); 
    } 
} 
add_action('init','possibly_redirect'); 
+0

Celui-ci fonctionne mieux pour plus de scénarios, merci. – Chozen

+0

La réponse acceptée ne fonctionne pas pour ceux d'entre nous utilisant wp_login_form() - utilisez celle-ci à la place. – piersb

2

Si vous Vous utilisez une page de connexion personnalisée, mais en utilisant wp_login_form(), sachez que le formulaire sera POST sur wp-login.php, vous devrez donc vérifier si $ _POST est vide avant de le rediriger.

function prefix_wp_login_redirect() { 
    global $pagenow; 
    if($pagenow == 'wp-login.php' && empty($_POST)) { 
    auth_redirect(); 
    exit(); 
    } 
} 
1

Le crochet d'action correcte est login_init que seuls feux sur wp-login.php.

Ici, pas ?action=action-name est demandée, il est donc la page principale de connexion:

add_action('login_init', function(){ 
    if(!isset($_GET['action'])) { 
     wp_redirect('http://example.com'); 
    } 
}); 

Pour toute demande, nous pouvons utiliser un crochet spécifique login_form_ACTION-NAME, c.-à-postpass, logout, lostpassword, retrievepassword, resetpass, register et login. Exemple:

add_action('login_form_register', function(){ 
    wp_redirect(site_url('custom-registration/')); 
}); 
Questions connexes