Este código verifica si un usuario está iniciando sesión por primera vez, es decir, después del registro. Quiero redirigirlo a una página personalizada si es así. De lo contrario, redirigirlo a la página de inicio o página de administración.¿Redirige al usuario después del primer inicio de sesión en wordpress?
function mylogin_redirect() {
global $user_ID;
if($user_ID) {
$user_info = get_userdata($user_ID);
// If user_registered date/time is less than 48hrs from now
// Message will show for 48hrs after registration
if (strtotime($user_info->user_registered) > (time() - 172800)) {
header("Location: http://example.com/custompage");
} elseif(current_user_can('manage_options')) {
header("Location: http://example.com/wp-admin/");
} else {
header("Location: http://example.com/");
}
}
}
add_action('wp_head', 'mylogin_redirect');
Pero no funciona? Mi conjetura es que no quede enganchado en wp_head ... He intentado lo siguiente usando el filtro login_redirect:
function mylogin_redirect($redirect_to, $url_redirect_to = '', $user = null) {
global $user_ID;
if($user_ID) {
$user_info = get_userdata($user_ID);
// If user_registered date/time is less than 48hrs from now
// Message will show for 48hrs after registration
if (strtotime($user_info->user_registered) > (time() - 172800)) {
return get_bloginfo('url') . "/custompage/";
} elseif(current_user_can('manage_options')) {
return admin_url();
} else {
return get_bloginfo('url');
}
}
}
add_filter('login_redirect', 'mylogin_redirect');
Aunque me entra, no llega a ninguna parte, sino a http://example.com/wp-login.php
lugar con un espacio en blanco página.
ACTUALIZACIÓN: Ok, no sé lo que está pasando. Usando el gancho del filtro, puedo llegar al destino deseado solo después del segundo inicio de sesión. Bueno, no realmente segundo inicio de sesión, pero en el segundo clic del botón de inicio de sesión. Lo hice así: ingrese las credenciales -> inicio de sesión -> (página incorrecta) -> presione el botón Atrás -> ingrese las credenciales nuevamente -> inicio de sesión -> (página correcta). Extraño.
probé solución & usuario mesa de meta, no funcionó. Todavía me redirige a ../wp-login.php sin el formulario. El problema con el filtro es que el analizador no entra en el bloque 'if'. Porque si elimino el bloque 'if' y lo reemplazo por' return admin_url() ', funciona bien. – Joann
Debería utilizar la variable '$ user' pasada a la función, es decir' $ user-> ID' en lugar de '$ user_ID' global. – TheDeadMedic
¡Eso funcionó! Pero wordpress no parece reconocer este 'elseif (current_user_can ('manage_options')) {return admin_url();}'. ¿Alguna idea? ¡¡¡Muchas gracias!!! – Joann