Los usuarios son redirigidos a la página de inicio en lugar de wp-admin
Después de migrar mi sitio WordPress, los usuarios que no son Administradores son redirigidos a la página de inicio del sitio después del login. En el sitio anterior eran redirigidos a wp-admin. El Administrador sí es redirigido a wp-admin como debería ser.
Quiero que los usuarios sean redirigidos a wp-admin
después del inicio de sesión.
Cambié la siteurl desde la base de datos (wp_options
), y también agregué este filtro en mi functions.php
:
function my_login_redirect( $redirect_to, $request, $user ) {
// Devolver la URL del panel de administración
return admin_url();
}
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
¿Alguna ayuda por favor? ¡Gracias y Felices Pascuas!

¡Yujuu, lo resolví! Resulta que mi tema tenía una redirección como esta en el functions.php
:
// Bloquear acceso a /wp-admin para usuarios no administradores.
function custom_blockusers_init() {
if ( is_user_logged_in() && is_admin() && !current_user_can( 'administrator' ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'init', 'custom_blockusers_init' ); // Enganchar a 'init'
Todo lo que tienes que hacer es añadir tu propia capacidad de rol, por ejemplo: !current_user_can( 'manage-reports' )
Esto me ayudó mucho.

@Hola Lili tiene razón. Pero, ¡también deberíamos verificar DOING_AJAX!
// Bloquear acceso a /wp-admin para no administradores.
function custom_blockusers_init() {
if ( is_user_logged_in() && is_admin() && !current_user_can( 'administrator' ) && (defined( 'DOING_AJAX' ) && !DOING_AJAX) ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'init', 'custom_blockusers_init' ); // Conectar a 'init'

El siguiente código funciona como se espera. Este código restringe el acceso a usuarios no administradores al área de wp-admin o a la página de perfil.
add_action( 'admin_init', 'redirect_non_admin_users' );
/**
* Redirige a usuarios no administradores a la página de inicio
*
* Esta función está vinculada al gancho de acción 'admin_init'.
*/
function redirect_non_admin_users() {
if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) {
wp_redirect( home_url() );
exit;
}
}

ÚLTIMO RECURSO QUE FUNCIONA Puedes desactivar temporalmente la redirección desde el archivo wp-login.php y luego eliminar todos los plugins recién instalados o actualizados.
- Desactiva la redirección abriendo el archivo wp-login.php
2. Desplázate hacia abajo hasta la línea donde está el código do_action( "login_form_{$action}" );
En mi caso estaba alrededor de la línea 461
Comenta esa línea de código para desactivar la redirección
Guarda el archivo. Ahora podrás iniciar sesión usando http://www.example.com/wp-login.php
Desactiva o elimina todos los plugins instalados recientemente, especialmente aquellos que gestionan funcionalidades de control de acceso
Borra tus cookies y caché
