Evitar que los usuarios vayan al perfil de WordPress después de iniciar sesión

8 sept 2012, 20:41:46
Vistas: 18.9K
Votos: 0

Tengo un rol personalizado en mi sitio y los usuarios solo pueden acceder a su página de perfil, esto parece ser el mínimo requerido por WordPress. Sin embargo, las cuentas son gestionadas por nosotros y este es un sitio privado, no queremos que los usuarios puedan cambiar su nombre de usuario, email o contraseña usando WordPress.

El único problema que tenemos ahora es el inicio de sesión. Las páginas internas requieren que estés autenticado. Tenemos una página de destino con un enlace a la página de login, para este enlace aplicamos redirect_to=/blog/ y después de iniciar sesión vas al blog. Esto funciona bastante bien para nosotros.

Sin embargo, si un usuario sigue un enlace a una página interna (o recibe el enlace automáticamente por email, desde la configuración de suscripción) entonces el enlace requerirá que inicie sesión, llevándolo a la pantalla de login sin el parámetro redirect_to. Esto significa que irán directamente a la página de perfil.

No entiendo por qué va a la página de perfil en lugar de la página que solicitaron, pero necesitamos redirigirlos de vuelta al blog.

Aquí hay una función que configuré con la intención de que después de iniciar sesión, seas llevado al blog. En este punto no nos importa si un enlace permanente no funciona en la primera visita (por supuesto funcionarán una vez que inicies sesión).

Pero esta función no funciona. wp_signon no se activa después de que un usuario inicia sesión, sino que se usa para iniciar sesión.

¿Qué debo hacer?

function login_redirect() {
    wp_redirect( get_bloginfo( 'url' ) . '/blog/' );
}
add_action('wp_signon', 'login_redirect');`
0
Todas las respuestas a la pregunta 2
0

Existen dos posibles soluciones para tu problema.

  1. Puedes descargar el plugin "Login redirect" desde aquí: http://wordpress.org/extend/plugins/peters-login-redirect/

  2. Deberías usar un filtro login_redirect:

function my_login_redirect($redirect_to, $request) {
$redirect_url = get_bloginfo( 'url' ) . '/blog/';

return $redirect_url;
}
add_filter("login_redirect", "my_login_redirect", 10, 3);

Más información sobre el filtro login_redirect: http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

8 sept 2012 21:31:23
3
-1

Cada una de las soluciones anteriores parece redirigir al usuario a una URL predeterminada específica.

Para redirigir al usuario a la página a la que originalmente intentaba acceder, creo que solo se puede lograr (ejem) editando wp-login.php y cambiando

$redirect_to = admin_url();

por

$redirect_to = $_SERVER[HTTP_REFERER];
15 mar 2013 03:16:54
Comentarios

Todo se perderá cuando actualices tu instalación de WordPress...

RRikesh RRikesh
15 mar 2013 08:06:56

simplemente hazlo en el tema hijo.

user2060451 user2060451
17 ago 2016 10:37:43

Nunca deberías editar los archivos núcleo de WP.

Tom Tom
18 abr 2018 08:18:00