Redirección para usuarios logeados en página específica

  • Autor Autor MarceFX
  • Fecha de inicio Fecha de inicio
MarceFX

MarceFX

Épsilon
Verificación en dos pasos activada
Verificado por Whatsapp
Hola,

Tengo una página concreta a la que solo deberían acceder usuarios no identificado. Estoy intentando averiguar cómo enviar al usuario identificado a otra página si intenta acceder a esta en concret. He estado probando esto, pero no me va:

Insertar CODE, HTML o PHP:
<?php
if($_SERVER['REQUEST_URI'] != '/directorio-de-la-pagina' || $_SERVER['REQUEST_URI'] != '/otro-directorio-al-que-no-podria-acceder'){

   if(is_user_logged_in()) {
       wp_redirect( 'http://www.mysite.com/landingpage', 301 ); exit;
   }
}

Cuando inserto en functions.php este código, la página no funciona. ¿Alguna idea?

Con ese código la web funciona, pero no hace lo que quiero:

Insertar CODE, HTML o PHP:
global $wp_query;
$current_page_id = $wp_query->post->ID;

if(is_user_logged_in() && $current_page_id == '376') {
wp_redirect( 'http://marcefx.com', 302 );
}

Gracias!
 
Última edición:
En un Theme que desarrolle desde cero tengo este extracto de codigo, lo que hace es que al momento de estar en un post por ejemplo, entras a la opcion "Entrar" y de logueas, despues de loguearte automaticamente te redirecciona a la pagina en la que estavas antes de loguearte.

PHP:
<?php
// Enlaces para Acceder y Salir.
if ( !is_user_logged_in() )
    $menu_principal_enlaces = "<li class=\"register\"><a rel=\"nofollow\" href=\"/wp-login.php?action=register\" title=\"Registro\">Registrarse</a>
<li class=\"login\"><a rel=\"nofollow\" href=\"" . wp_login_url($_SERVER['REQUEST_URI']) ."\" title=\"Acceder\">Entrar</a></ul>";
elseif ( is_user_logged_in() )
    $menu_principal_enlaces = "<li class=\"logout\"><a rel=\"nofollow\" href=\"" . wp_logout_url($_SERVER['REQUEST_URI']) . "\" title=\"Salir\">Desconectarse</a>
<li class=\"panel\"><a rel=\"nofollow\" href=\"/wp-admin/\" title=\"Escritorio\">Panel</a></ul>";

Espero que te sirva igual que a mi. 🙂

----------

Entendi un poco mal, pero ya te entenidi 😛

Seria algo como
PHP:
<?php
if ( $_SERVER['REQUEST_URI'] == '/pagina-en-la-que-se-encuentra' && is_user_logged_in() )
   wp_redirect(); // Lo que quieras.

Colocalo en el header.php antes de todo (Crea una apertura <?php).
 
Última edición:
Gracias compi, aunque lo he resulto hace 10 minutos de una forma más sencilla que se me ocurrió:

Insertar CODE, HTML o PHP:
add_shortcode('redirigir', 'redirectuser');
function redirectuser() {
	if(is_user_logged_in()) {
	wp_redirect( '/pagina-destino, 302 );
	}
	else {echo "Error";}
	
}

Creo el shortcode 'redirigir', que usa la función redirectuser. Meto el shortcode en la página a la que no quiero que acceda el usuario logeado y ale, funciona 🙂

Saludos
 
Gracias compi, aunque lo he resulto hace 10 minutos de una forma más sencilla que se me ocurrió:

Insertar CODE, HTML o PHP:
add_shortcode('redirigir', 'redirectuser');
function redirectuser() {
    if(is_user_logged_in()) {
    wp_redirect( '/pagina-destino, 302 );
    }
    else {echo "Error";}
    
}

Creo el shortcode 'redirigir', que usa la función redirectuser. Meto el shortcode en la página a la que no quiero que acceda el usuario logeado y ale, funciona 🙂

Saludos

No estaria mal un wp_die() en lugar de echo error. :d
 
No estaria mal un wp_die() en lugar de echo error. :d

Pero es que entonces no seguiría ejecutándose el código y no cargaría el sitio. Prefiero que muestre error, para que el usuario sepa que algo pasa, pero pueda seguir con el proceso. En caso de que muestre "error", el usuario verá un formulario que no debía ver, pero no es grave.

Saludos!
 
Atrás
Arriba