registration form

Cómo redirigir al usuario cuando inicia o cierra sesión en WordPress

En este artículo vamos a explicar cómo redirigir al usuario cuando inicia o cierra sesión en WordPress. Ésto puede resultar muy útil en un desarrollo a medida, por ejemplo: En nuestro front tenemos un formulario de login, y queremos que cuando un usuario inicie sesión, sea redirigido directamente a un área privada a la que sólo tienen acceso los usuarios registrados.

También puede ser muy útil que cuando un usuario haga logout o cierre sesión, en lugar de redirigir al wp-login, te envíe a la home de nuestro sitio.

Redirigir al usuario cuando inicia sesión

Debemos añadir unas líneas de código a nuestro functions.php, donde crearemos una función para redirigir al usuario que añadiremos al action wp_login. Imaginemos que tenemos una página llamada “Área Privada” que sólo es accesible a usuarios logeados, vamos a ver cómo podemos redirigir al usuario allí cuando inicie sesión:

<?php

function my_custom_login_redirect(){
  //Pasamos a la función home_url() el slug de nuestra página de Área Privada
  wp_redirect( home_url("area-privada") );

  exit();
}
add_action( 'wp_login','my_custom_login_redirect' );

Redirigir al usuario cuando cierra sesión

Prácticamente igual que antes, pero en lugar de usar el hook wp_login, usaremos el hook wp_logout. Es decir, sólo tendremos que añadir en nuestro functions.php:

<?php

function my_custom_logout_redirect(){
  wp_redirect( home_url() );
  exit();
}
add_action( 'wp_logout', 'my_custom_logout_redirect' );

Con estas dos simples funciones podemos enviar al usuario donde queramos cuando inicie o cierre sesión. Podemos incluso ir un poco más allá: filtrar por tipo de usuario y en función de su rol redirigirle a un sitio u otro.

En el ejemplo anterior al iniciar sesión, puede que nos interese esta funcionalidad sólo para los usuarios suscriptores por ejemplo, pero cuando el login sea de un usuario administrador, que vaya directamente al backend. En este caso tendríamos que recurrir al filtro login_redirect, y actuar sobre él en función del rol:

<?php

function my_custom_login_redirect($redirect_to, $request, $user) {
  global $user;

  if ( isset( $user->roles ) && is_array( $user->roles ) ) {
    if ( in_array( 'subscriber', $user->roles ) ) {
      return home_url("area-privada");
    }
  }

  return $redirect_to;
}
add_filter( 'login_redirect', 'my_custom_login_redirect', 10, 3 );

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

5 comentarios en Cómo redirigir al usuario cuando inicia o cierra sesión en WordPress

  1. Gracias, he probado el redireccionamiento y todo ok, salvo que en la pagina «Estás intentando salir de… ¿Seguro que quieres salir? la URL que se muestra es «Algo ha ido mal»

    ¿Sabes donde cambiar esta URL por otro texto?

    Muchas gracias

  2. Hola Estimado,

    He intentado redirigir al usuario cuando inicia según rol con el código que has indicado pero no me ha funcionado, lo que me interesa es que todos los usuarios puedan acceder a una página específica pero no al administrador y cuando inicie el administrador acceder a la página de admin.

    Me gustaría puedas ayudarme con eso, muchas gracias.-

  3. hola como estan tengo un dominio http://www.midonio.com y solo quiero que puedna navegar en el aquellos que se logeen.
    buescando solo encontre plugin de registro de y demas pero yo quiero que solamente puedan ver la web total osa todo lo que ay dentro de ese dominio solo aquellos que se logeen es posible eso?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios