Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
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 );?>

Puede que también te interese

Crea tu propio motor de búsqueda para WordPress
Crea tu propio motor de búsqueda para WordPress
En este artículo vamos a ver cómo personalizar la búsqueda en WordPress, creando nuestro propio motor de búsqueda para adaptarlo a nuestras necesidades. Por defecto el…
WP-CLI Parte 4, trabajando con usuarios
WP-CLI Parte 4, trabajando con usuarios
1. Instalación y primeros pasos 2. Instalando WordPress y primeros pasos y configuraciones 3. Trabajando con posts 4. Trabajando con usuarios 5. Trabajando con la…
De Font Awesome a SVG para mejorar el WPO
De Font Awesome a SVG para mejorar el WPO
Siempre me ha gustado Font Awesome, es una librería variada y versátil con la que puedes añadir iconos a botones sociales, campos de formularios, etiquetas,…
Cómo integrar los estilos de los menús de bootstrap con WordPress
Cómo integrar los estilos de los menús de bootstrap con WordPress
Si estás desarrollando un tema nuevo en WordPress y estás usando el framework Bootstrap para la maquetación del Front-end, probablemente te hayas encontrado con el…