Redireccionar Usuarios Administradores en el Panel de Control

9 nov 2011, 21:02:58
Vistas: 14K
Votos: 5

Actualmente estoy intentando configurar una redirección para que mis usuarios administradores sean redirigidos a una página diferente al escritorio dentro de la interfaz administrativa de WordPress.

Si omito mi condicional, la redirección funciona, pero también redirige a los usuarios que no son administradores y no quiero esto.

Aquí está el código que tengo en functions.php

add_filter('login_redirect', 'dashboard_redirect');
function dashboard_redirect($url) {
  global $current_user;
  get_currentuserinfo();
  $level = (int) $current_user->wp_user_level;

  if ( $level > 10  ) {
    $url = 'wp-admin/edit.php';
  }

  return $url;
}     
1
Comentarios

¿Qué tal si aceptas como correctas las respuestas que ciertamente te ahorraron tiempo?

Johannes Pille Johannes Pille
26 nov 2011 01:47:30
Todas las respuestas a la pregunta 4
0

No deberías usar Niveles de Usuario. Los Niveles de Usuario fueron reemplazados en WP 2.0 y han sido oficialmente obsoletos desde la versión 3.0

add_filter( 'login_redirect', 'dashboard_redirect' );
function dashboard_redirect( $url ) {
    if ( current_user_can( 'manage_options' ) ) {
         $url = esc_url( admin_url( 'edit.php' ) );
    }

    return $url;
}    

Hará lo que deseas.

9 nov 2011 21:09:52
0

Si quieres redirigir a otra página cada vez que intenten acceder al escritorio, y no solo después del login, usa algo como esto:

add_action( 'current_screen', function() {
    $screen = get_current_screen();
    if ( isset( $screen->id ) && $screen->id == 'dashboard' ) {
        wp_redirect( admin_url( 'edit.php?post_type=my-post-type' ) );
        exit();
    }
} );
16 nov 2020 07:08:35
1

Yan también agrega esta acción simple al 'login_form' (consulta este sitio para más detalles).
Por ejemplo, para redirigir al panel de control, puedes usar:

add_action('login_form', 'redirect_after_login');
function redirect_after_login() {
    global $redirect_to;
    if (!isset($_GET['redirect_to'])) {
        $redirect_to = get_option('siteurl') . '/wp-admin/index.php';
    }
}
12 ene 2012 13:44:44
Comentarios

esto funcionó genial para mí.

TJ Sherrill TJ Sherrill
23 abr 2013 18:55:44
0

Prueba envolviendo la función con esta condición current_user:

if (current_user_can('administrator')) {
// Tu Código de Redirección Aquí
}
9 nov 2011 21:09:24