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?


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é.


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


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();
      }
});
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.