Los usuarios son redirigidos a la página de inicio en lugar de wp-admin

30 abr 2016, 21:27:26
Vistas: 44.8K
Votos: 3

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!

1
Comentarios

También puedes utilizar este plugin. https://wordpress.org/plugins/role-based-redirect/

Yasar Yasar
25 jul 2018 07:46:34
Todas las respuestas a la pregunta 4
0

¡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.

1 may 2016 19:44:40
1

@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'
22 jun 2018 05:24:52
Comentarios

Para tu información, hay un paréntesis de cierre de más en tu respuesta (al final de la sentencia if). Me confundió por unos minutos. Gracias de todos modos. Esto me ayudó (yo quiero redirigir a los no administradores a la página de inicio)

MrVimes MrVimes
22 jul 2021 15:29:27
0

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;
    }
}
30 ene 2019 09:48:57
1
-2

Ú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.

  1. 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

  1. Comenta esa línea de código para desactivar la redirección

  2. Guarda el archivo. Ahora podrás iniciar sesión usando http://www.example.com/wp-login.php

  3. Desactiva o elimina todos los plugins instalados recientemente, especialmente aquellos que gestionan funcionalidades de control de acceso

  4. Borra tus cookies y caché

19 dic 2017 23:18:43
Comentarios

Es una muy mala práctica modificar los archivos principales de WordPress

Anton Lukin Anton Lukin
19 dic 2017 23:33:26