Cómo enviar a una página al iniciar sesión
Hace unas cuantas semanas que he visto esta opción para enviar a una página al iniciar sesión, y hoy voy a contarte cómo se hace. La idea es que cuando un usuario vaya a iniciar sesión en tu WordPress, tú le muestres un desplegable con varias páginas a las que puede ser redirigido, en lugar de ir directamente al Escritorio.
Parece interesante, ¿verdad?. ¡Vamos a ver cómo se hace!.
Código que vamos a utilizar
Este código es un tanto complejo si no sabemos php, pero aún así, vamos a intentar explicarlo de forma rápida y sencilla:
- Creamos un menú desplegable con el nombre de las páginas a las que vamos a redirigir al usuario.
- Creamos la función que se encargará de realizar la redirección.
- Añadimos el menú desplegable con las funciones a la página de login.
- No aseguramos de que la redirección solo se lleva a cabo si se ha elegido una opción del menú desplegable.
El código sería algo parecido a este:
// Crear las opciones del menú desplegable del login
function custom_login_fields() {
?>
<p>
<label>
<strong>Llévame a esta página: </strong>
<select name="login_location">
<option value="">Elige …</option>
<option value="<?php bloginfo('url'); ?>">Inicio</option>
<option value="<?php bloginfo('url'); ?>/blog/">Blog</option>
<option value="<?php bloginfo('url'); ?>/contacto/">Contacto</option>
</select>
</label>
</p><br/>
<?php
}
// Función para redirigir al usuario a la página elegida
function location_redirect() {
$location = $_POST['login_location'];
wp_safe_redirect($location);
exit();
}
// Añadir el desplegable al login
add_action('login_form','custom_login_fields');
// La redirección sólo ocurre cuando se selecciona una de las opciones
if ( (isset($_GET['action']) && $_GET['action'] != 'logout') || (isset($_POST['login_location']) && !empty($_POST['login_location'])) )
add_filter('login_redirect', 'location_redirect', 10, 3);
Ni que decir tiene que puedes cambiar las páginas a las que quieres enviar al iniciar sesión, lo único que debes tener en cuenta es que esas páginas debes ponerlas, al menos, con un slash ( / ) antes del nombre de la página o sección. Por defecto el parámetro bloginfo toma la url de la página web.
También puedes añadir más secciones a las que redirigir, tan solo debes duplicar una de las líneas que redirige y cambiar la página a la que quieres redirigir, por ejemplo, puedes duplicar la línea
<option value="<?php bloginfo('url'); ?>/contacto/">Contacto</option>
y enviar por ejemplo a la sección quienes somos de esta forma:
<option value="<?php bloginfo('url'); ?>/quienes-somos/">Quienes somos</option>
Evidentemente, el slug (el nombre) de la sección Quienes somos de tu página web debe ser https://tupaginaweb.com/quienes-somos.
Así quedaría el login con esta opción incorporada
Como has visto, este código no es demasiado sencillo de entender si no tenemos unos mínimos conocimientos de programación php y de la estructura y funcionamiento de WordPress, pero aún así, puedes copiarlo y pegarlo en tu plugin de funciones sin ningún problema.
