¿Cómo redirigir todas las solicitudes a wp-login.php?

2

Creé algunas páginas de plantillas de registro / inicio de sesión personalizadas y ahora quiero que todas las solicitudes a wp-login.php se redirijan a una URL personalizada. Ahora tengo algo como esto:

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

pero no funciona correctamente porque cuando hago clic en un enlace de cierre de sesión (en un meta widget) me redireccionará al enlace de inicio de sesión y no al cierre de sesión. ¿Tienes otro método para hacerlo de una manera segura o mejor? Gracias.

    
pregunta John Smith 02.04.2012 - 13:48

4 respuestas

6

Para restringir el acceso directo solo para 'wp-login.php', sin solicitud POST o GET (útil para formularios de inicio de sesión personalizados ajax), uso la función avanzada:

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

En realidad, encontré la forma correcta de hacer esto.

Para redirigir el inicio de sesión de WordPress a una URL personalizada:

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

Para redireccionar el registro de wordpress a una url personalizada:

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

Creo que el código es muy fácil de entender, básicamente se agregan enlaces para iniciar sesión y se registran las URL y luego se usa wp-redirect para redirigir a una URL personalizada. Todas las solicitudes a wp-login.php y wp-login.php? Action = register serán redirigidas a las URL personalizadas que establezca.

    
respondido por el John Smith 04.04.2012 - 08:09
1

Recomendaría la respuesta de John, habiendo omitido exit() . Entonces, el código que es completamente funcional en mi caso es:

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

Parece que exit() está haciendo imposible que un usuario inicie sesión.

    
respondido por el Milan 22.02.2013 - 16:04
0

Dos cosas a tener en cuenta de la referencia de la función WP para wp_redirect() ...

  1. un exit; es de hecho parte del uso, y
  2. El parámetro $location debe ser el "URI absoluto", uno de los cuales incluye el protocolo ( http:// ) Ejemplo de URI absoluto / completo: http://www.example.com/blog/images/icecream.jpg
respondido por el D. Abel 27.01.2014 - 05:47

Lea otras preguntas en las etiquetas