Cómo redirigir al usuario si no ha iniciado sesión en WordPress » Redirección de página

Publicado: 2022-01-02

Cómo redirigir si no ha iniciado sesión en WordPress En la última publicación, demostré cómo comprobar si el usuario ha iniciado sesión en WordPress. Una razón común por la que puede querer verificar si el usuario de WordPress ha iniciado sesión es mostrar diferentes páginas según el estado de inicio de sesión del usuario de WordPress. Si desea redirigir a los usuarios si no han iniciado sesión en WordPress, puede lograrlo agregando un fragmento de código en su archivo functions.php, como verá en este breve tutorial.

¿Por qué redirigir a los usuarios en WordPress?

Redirigir a los usuarios es un requisito importante para la mayoría de los sitios de WordPress. Hay diferentes momentos en los que puede querer redirigir a los usuarios de una página a otra. Por ejemplo, puede redirigir a los usuarios de WooCommerce después del pago, o puede redirigir al usuario después del registro o la redirección al iniciar sesión en el sitio web.

Redirigir si no ha iniciado sesión en WordPress es una de las redirecciones más comunes. Si bien hay complementos que pueden ayudar a administrar la redirección en WordPress, agregar un pequeño fragmento que resuelva este problema es una mejor solución que confiar en un complemento de terceros.

En este tutorial, demostraré cómo agregar un fragmento en su tema o complemento que crea la redirección para los usuarios que no han iniciado sesión en una página de su elección.

Pasos para redirigir si no ha iniciado sesión en WordPress

Para implementar la redirección si no ha iniciado sesión en WordPress, debe seguir los siguientes pasos:

  1. Inicie sesión en su sitio de WordPress y navegue hasta el editor de temas en el menú de apariencia en el menú del panel principal.
  2. Abra el archivo functions.php del tema activo de WordPress. También puede usar CPanel o FTP para acceder al archivo functions.php del tema activo. Se encuentra en este camino – wp-root-installation/wp-content/themes/active-theme/functions.php
  3. Cree un gancho de acción que se conecte al gancho de inicialización del administrador : admin_init , por ejemplo, add_action('init', 'redirect_if_not_logged_in') . Este gancho tiene una función de devolución de llamada que tendrá la lógica de verificar si el usuario está conectado a WordPress y, si no está conectado, es redirigido a la página que deseamos.
  4. Cree la función de devolución de llamada como mencionamos anteriormente y agregue el código en consecuencia.
  5. Guarde los cambios y vaya a la interfaz para probar si los usuarios que no han iniciado sesión son redirigidos a la página que agregó en el código.

Demostremos cómo puede agregar una redirección si el usuario no ha iniciado sesión en WordPress. Usaré el tema predeterminado de WordPress en la instalación localhost, pero esto puede funcionar para todos los demás sitios, independientemente del tema y el entorno de alojamiento.

El código para agregar redirección también puede tener otra condición, como en la mayoría de los casos, cuando desea restringir el contenido de los usuarios que no han iniciado sesión, debe verificar dos condiciones:

  • Si el usuario está logueado
  • Si el usuario está en la página donde tienes el contenido restringido

Cuando se cumplen estas condiciones, debe usar la función wp_redirect() para redirigir al usuario a la página de su elección.

Función de WP: wp_redirect ()

Esta es una función de redirección de WordPress que se puede usar en temas y complementos para redirigir a los usuarios. La expresión general de esta función es la siguiente:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Como puedes ver la función tiene tres parámetros que son los siguientes:

Parámetro Descripción
$location Esta es la URL a la que desea redirigir al usuario. Cuando usa esta función cuando el usuario no ha iniciado sesión, debe proporcionar la URL a la página. Redirigiremos al usuario como verá en el ejemplo de código.
$status Este es un parámetro opcional y es posible que no lo vea usado con frecuencia, pero es el código de estado de respuesta HTTP que debe usar. Predeterminado '302' y puede usar 301 para una redirección permanente. Tenga cuidado cuando utilice este parámetro con la opción de redirección 301.
$x_redirect_by Esta es simplemente la aplicación que aplica la redirección y rara vez cambiará el valor predeterminado que es WordPress

Acción de redirección de plantilla si el usuario no ha iniciado sesión

Para redirigir al usuario que no ha iniciado sesión en WordPress, ahora puede usar la función wp_redirect con la verificación condicional si el usuario ha iniciado sesión de la siguiente manera:

 add_action('template_redirect', 'redirect_if_user_not_logged_in');

función redirect_if_user_not_logged_in() {

	if ( is_page('slug || ID') && ! is_user_logged_in() ) { //el ejemplo puede ser is_page(23) donde 23 es el ID de la página

		wp_redirect('http://tu-página-de-redireccionamiento-aquí'); 
 
     exit;// nunca olvides esta salida ya que es muy importante que wp_redirect() tenga exit/die
   
   }
   
}

Reemplace el slug de la verificación condicional con su página respectiva y también reemplace la URL de redirección en el código anterior y agréguelo a functions.php para redirigir a los usuarios que no han iniciado sesión en la URL de esa página.

Admin Init Redirect Action si el usuario no ha iniciado sesión

Alternativamente, puede conectar admin_init en lugar de template_redirect para redirigir al usuario si no ha iniciado sesión en WordPress.

El código debe ser el mismo aparte del punto de agregar el gancho de acción. El código debe ser el siguiente:

 add_action('admin_init', 'redirect_if_user_not_logged_in');

función redirect_if_user_not_logged_in() {

if ( !is_user_logged_in() && is_page('slug') ) {

      wp_redirect('http://tu-página-de-redireccionamiento-aquí'); 
   
   Salida;
   }
}

Cuando agregamos este código al tema predeterminado de WordPress functions.php y agregamos el slug para la página que queremos crear, la redirección y la URL para el destino, funciona perfectamente como puede ver:

Cómo redirigir si no ha iniciado sesión en WordPress

Pensamientos finales

Cuando desee crear una redirección si el usuario no ha iniciado sesión en WordPress, primero debe verificar si el usuario ha iniciado sesión con el código que compartí en esa publicación, luego use la función wp_redirect () para agregar el nuevo destino donde los usuarios deberían ser redirigido si acceden a una determinada página o publicación.

Este código se puede agregar al archivo functions.php de su tema o puede usarlo como parte de su complemento personalizado de WordPress. Es importante recordar siempre, cuando usa la función wp_redirect , NUNCA debe olvidar agregar la salida ya que esta función no sale automáticamente.

Como desarrollador de complementos de WordPress, también puede considerar otro complemento de redirección de WordPress, wp_safe_redirect(), que proporciona una mejor forma de redirección, ya que verifica si el host del parámetro $ubicación está permitido.

Artículos similares