Redireccionar Usuarios Administradores en el Panel de Control
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;
}

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.

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();
}
} );

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';
}
}
