Redirecționare Utilizator Administrator în Dashboard
Încerc să configurez o redirecționare astfel încât administratorii să fie redirecționați către o pagină diferită de dashboard în interfața de administrare WordPress.
Dacă omit condiționalul, redirecționarea funcționează, dar afectează și utilizatorii ne-administratori, ceea ce nu doresc.
Iată codul pe care îl am în 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;
}

Nu ar trebui să folosești Niveluri de utilizator. Nivelurile de utilizator au fost înlocuite în WordPress 2.0 și au fost oficial depreciate începând cu versiunea 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;
}
Va face exact ceea ce dorești.

Dacă dorești să redirecționezi către o altă pagină de fiecare dată când se încearcă accesarea panoului de control, nu doar după autentificare, folosește ceva de genul acesta:
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 de asemenea adaugă această acțiune simplă la 'login_form' (vezi acest site pentru mai multe detalii).
De exemplu, pentru a redirecționa către panoul de control, poți folosi:
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';
}
}
