Reindirizzare l'Utente Admin nel Dashboard
Sto cercando di impostare un reindirizzamento in modo che i miei utenti amministratori vengano reindirizzati a una pagina diversa dal dashboard all'interno dell'interfaccia di amministrazione di WordPress.
Se escludo la mia condizione, il reindirizzamento funziona, ma reindirizza anche gli utenti non amministratori e non voglio che accada.
Ecco il codice che ho inserito nel file 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;
}

Non dovresti usare i Livelli Utente. I Livelli Utente sono stati sostituiti in WP 2.0 e sono stati ufficialmente deprecati dalla versione 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;
}
Farà quello che desideri.

Se vuoi reindirizzare a un'altra pagina ogni volta che tentano di accedere alla dashboard, e non solo dopo il login, usa qualcosa come questo:
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();
}
} );

Puoi anche aggiungere questa semplice azione al 'login_form' (vedi questo sito per maggiori dettagli).
Ad esempio, per reindirizzare alla dashboard, puoi usare:
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';
}
}
