web-dev-qa-db-fra.com

Rediriger l'utilisateur administrateur dans le tableau de bord

J'essaie actuellement de configurer une redirection pour que mes utilisateurs administrateurs soient redirigés vers une page autre que le tableau de bord dans l'interface administrateur de wordpress.

Si je laisse mon conditionnel, la redirection fonctionne, mais elle redirige également les utilisateurs non administrateurs et je ne le souhaite pas.

Voici le code que j'ai dans 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;
}     
3
plumwd

Vous ne devez pas utiliser Userlevels . Les niveaux d'utilisateur ont été remplacés dans WP 2.0 et sont officiellement obsolètes depuis la version 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;
}    

Fera ce que tu veux.

6
Johannes Pille

Yan ajoute également cette action simple à la 'login_form' (voir this site pour plus de détails).
Par exemple, pour rediriger vers un tableau de bord, vous pouvez utiliser:

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

Essayez d'encapsuler la fonction avec cette condition current_user:

if (current_user_can('administrator')) {
// Your Redirect Code Here
}
0
Jeremy Jared