Como redirecionar todos os pedidos para o wp-login.php?

2

Eu criei algumas páginas de modelo de login / registro personalizadas e agora quero que todas as solicitações para wp-login.php sejam redirecionadas para um URL personalizado. Agora eu tenho algo assim:

add_action('init','possibly_redirect');
 function possibly_redirect(){
global $pagenow;
if( '/wp-login.php' == $pagenow ) {
wp_redirect('/login');
exit();
}
}

mas não funciona corretamente porque quando eu clico em um link de logout (em um meta widget) ele me redireciona para o link / login e não faz logout. Você tem outro método para fazer isso de uma maneira segura ou melhor? Obrigado.

    
por John Smith 02.04.2012 / 13:48

4 respostas

6

Para restringir o acesso direto apenas para 'wp-login.php', sem solicitação POST ou GET (útil para formulários personalizados de login do ajax), eu uso a função avançada:

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');
    
por Anatoly 12.09.2012 / 09:39
3

Na verdade, encontrei o caminho certo para fazer isso.

Para redirecionar o login do wordpress para um URL personalizado:

function redirect_login()
{
wp_redirect( home_url( '/login' ) );
exit(); 
}
add_action( 'login_form_login', 'redirect_login' );

Para redirecionar o registro do wordpress para um URL personalizado:

 function redirect_register()
{
wp_redirect( home_url( '/registration' ) );
exit(); 
}
add_action( 'login_form_register', 'redirect_register' );

Eu acho que o código é muito simples de entender, basicamente você adiciona ganchos para login e registra url e então usa o wp-redirect para redirecionar para um url personalizado. Todos os pedidos para wp-login.php e wp-login.php? Action = register serão redirecionados para o URL personalizado que você definiu.

    
por John Smith 04.04.2012 / 08:09
1

Eu recomendaria a resposta de João, tendo exit() omitido. Então, o código que está totalmente funcional no meu caso é:

function redirect_login() {
    wp_redirect( home_url( '/login' ) ); 
}
add_action( 'login_form_login', 'redirect_login' );

Parece que o exit() está impossibilitando o login de um usuário.

    
por Milan 22.02.2013 / 16:04
0

Duas coisas a serem observadas na referência da função WP para wp_redirect() ...

  1. um exit; é de fato parte do uso e
  2. O parâmetro $location deve ser o "Absolute URI", incluindo o protocolo ( http:// ) Exemplo de URI absoluto / completo: http://www.example.com/blog/images/icecream.jpg
por D. Abel 27.01.2014 / 05:47