Cum restricționez accesul la panoul de administrare pentru anumite roluri de utilizatori?

15 iul. 2011, 00:06:16
Vizualizări: 23.3K
Voturi: 13

Aș dori să împiedic anumite roluri de utilizatori să acceseze panoul de administrare http://www.openeye.net/wp-admin/. Am mutat și restilizat profilurile utilizatorilor pe o nouă pagină care poate fi vizualizată pe site. Cum aș putea face acest lucru?

1
Comentarii

Am solicitat WooCommerce să modifice configurația, astfel încât să fie posibilă gestionarea autorizațiilor pentru partea lor din meniu. Ideea are nevoie de voturi pe: https://ideas.woocommerce.com Vă rog să-i acordați maximul de 3 puncte, mulțumesc!

Stefan Stefan
21 nov. 2019 09:55:23
Toate răspunsurile la întrebare 4
7
27

Pentru a bloca accesul abonaților și colaboratorilor în administrare:

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

Sper că acest lucru vă ajută. Toate rolurile oferă utilizatorului o capabilitate care este numele acelui rol, astfel încât puteți utiliza orice nume de rol ca o capabilitate.

15 iul. 2011 00:13:46
Comentarii

Excelent, dar primesc o eroare de sintaxă pe a doua linie.

Zach Shallbetter Zach Shallbetter
15 iul. 2011 00:23:46

Ah, da, este legată de paranteza suplimentară după ('DOING_AJAX')

Zach Shallbetter Zach Shallbetter
15 iul. 2011 00:58:14

Oh, scuze; a fost intenționat. Trebuia să fie încă una de închidere la final. Am adăugat-o în răspuns.

John P Bloch John P Bloch
15 iul. 2011 18:06:32

Există vreun motiv pentru care acest lucru nu funcționează cu tema 2011 și plugin-ul members?

Zach Shallbetter Zach Shallbetter
9 sept. 2011 09:36:43

Nu pare să funcționeze pe site-urile din rețea, aveți vreo idee de ce?

Zach Shallbetter Zach Shallbetter
10 oct. 2011 00:59:11

Pare să funcționeze pentru mine, pe o instalare standard WordPress. Mulțumesc mult :-)

Joshc Joshc
10 mar. 2012 19:54:40

Solicitarea Ajax către admin-ajax.php mă redirecționează către pagina principală. Nu utilizez o configurație multisite.

Sisir Sisir
7 mai 2012 13:19:31
Arată celelalte 2 comentarii
0
// Dacă rolul utilizatorului este Abonat, acesta nu poate accesa Panoul de administrare
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');
28 aug. 2016 09:59:53
0

Da, va trebui să utilizați funcția current_user_can( $capability ). Iată referința oficială WordPress: https://codex.wordpress.org/Function_Reference/current_user_can

28 aug. 2016 11:44:44
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();
      }
});
15 iul. 2019 19:52:03