Redireccionar usuarios no logueados desde páginas específicas

19 mar 2014, 02:54:20
Vistas: 17.4K
Votos: 1

He visto esta pregunta antes pero no exactamente intentando lograr lo que quiero.

Básicamente lo que quiero es: Si el usuario no está logueado Y está en -esta página- O -esta página- O -esta página, redirigirlo a -esta página- (que es una página de registro personalizada)

Estoy modificando este fragmento de código, pero no funciona. Agradeceré cualquier tipo de orientación.

<?php
function redirect_non_logged_in(){
  // si el usuario no está logueado y está en estas páginas
  if( !is_user_logged_in() && is_page( array( 250, 253 ) ) ) { 
    // Esto redirige a la página de registro personalizada
    wp_redirect(site_url('/registro-usuario'));
    exit();
  }
}
add_filter('get_header','redirect_non_logged_in');
?>
0
Todas las respuestas a la pregunta 2
3

Tu función está bien, pero 'get_header' es demasiado tarde.

Usa template_redirect en su lugar:

add_action( 'template_redirect', function() {

  if ( is_user_logged_in() || ! is_page() ) return;

  $restricted = array( 250, 253 ); // todas tus páginas restringidas

  if ( in_array( get_queried_object_id(), $restricted ) ) {
    wp_redirect( site_url( '/user-registration' ) ); 
    exit();
  }

});

Asegúrate de no incluir el ID de la página 'user-registration' en el array $restricted o experimentarás una redirección infinita...

19 mar 2014 07:17:46
Comentarios

Realmente lo aprecio. Esto funciona.

rohn rohn
20 mar 2014 08:07:31

Lamento interrumpir, pero en lugar de replicar la pregunta, te la haré aquí. Uso este código ligeramente modificado basado en tu respuesta: add_action( 'template_redirect', function() { if ( !is_page('login') || !is_user_logged_in() ) { wp_redirect( site_url( '/login', 301 ) ); exit(); }});, sin embargo, sigo recibiendo el bucle de redirección. ¿Puedes señalar qué está mal?

Frederick Andersen Frederick Andersen
13 ago 2014 04:52:45

Tu problema es que login no es una página, por lo que is_page('login') nunca puede ser verdadero. Saber si estás en la página de inicio de sesión no es directo en WordPress, mira esta respuesta para saber cómo hacerlo. @FrederickAndersen

gmazzap gmazzap
13 ago 2014 15:51:17
0
-3

Instalar el plugin Page Restrict https://da.wordpress.org/plugins/pagerestrict/

En los ajustes, selecciona que el formulario de inicio de sesión no se muestre

Inserta el siguiente enlace en el mensaje de restricción: <a href="https://tu-pagina-de-login/">Iniciar sesión</a> para ver esta página/entrada

7 nov 2017 14:32:49