Comment supprimer l'accès au tableau de bord de rôles d'utilisateur spécifiques?

11

Je voudrais empêcher certains rôles d'utilisateur d'accéder au tableau de bord http://www.openeye.net/wp-admin/ du tout. J'ai déplacé et redéfini les profils utilisateur vers une nouvelle page consultable sur le site. Comment pourrais-je procéder?

Zach Shallbetter
la source
J'ai demandé à WooCommerce de modifier leur configuration, il est donc possible de gérer les autorisations pour leur partie du menu. L'idée nécessite des votes sur: https://ideas.woocommerce.com Merci de lui donner votre maximum de 3 points, merci!
Stefan

Réponses:

22

Pour verrouiller les abonnés et les contributeurs hors de l'administrateur:

function wpse23007_redirect(){
  if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){
    wp_redirect(home_url());
    exit;
  }
}
add_action('init','wpse23007_redirect');

J'espère que ça t'as aidé. Tous les rôles donnent à l'utilisateur une capacité qui est le nom de ce rôle, vous pouvez donc utiliser n'importe quel nom de rôle comme capacité.

John P Bloch
la source
Excellent, mais je reçois une erreur de syntaxe sur la deuxième ligne.
Zach Shallbetter
Oh ok, c'est lié à l'extra (après ('DOING_AJAX')
Zach Shallbetter
Oh pardon; c'était intentionnel. Il devait y en avoir un autre à la fin. Je l'ai ajouté à la réponse.
John P Bloch
Y a-t-il une raison pour laquelle cela ne fonctionne pas avec le thème 2011 et le plugin membres?
Zach Shallbetter
1
Cela ne semble pas fonctionner sur les sites du réseau, une idée pourquoi?
Zach Shallbetter
1
//If User Roll is Subscriber, It can not login in Dashboard 
function wpse23007_redirect()
{
    if( is_admin() && !defined('DOING_AJAX') && current_user_can('subscriber') )
    {
        wp_logout();
        wp_redirect(home_url());
        exit;
    }
}
add_action('init','wpse23007_redirect');
Ganpat Rabari
la source
0
 add_action('init', function(){

      $redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
      $user = wp_get_current_user();
      if ( !defined('DOING_AJAX') && in_array( 'subscriber', (array) $user->roles ) ) {

          wp_redirect($redirect);
          exit();
      }
});
sudip
la source