Bagaimana cara menghapus akses dasbor dari peran pengguna tertentu?

11

Saya ingin mencegah peran pengguna tertentu dari mengakses http://www.openeye.net/wp-admin/ dasbor sama sekali. Saya telah memindahkan dan mengatur ulang profil pengguna ke halaman baru yang dapat dilihat di situs. Bagaimana saya bisa melakukan ini?

Zach Shallbetter
sumber
Saya meminta WooCommerce untuk mengubah pengaturan mereka, sehingga dimungkinkan untuk mengelola otorisasi untuk bagian menu mereka. Idenya membutuhkan suara di: https://ideas.woocommerce.com Tolong beri maksimal 3 poin, terima kasih!
Stefan

Jawaban:

22

Untuk mengunci pelanggan dan kontributor dari admin:

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

Semoga itu bisa membantu. Semua peran memberi pengguna kemampuan yang merupakan nama peran itu, sehingga Anda dapat menggunakan nama peran apa pun sebagai kemampuan.

John P Bloch
sumber
Luar biasa, namun saya mendapatkan kesalahan sintaks pada baris kedua.
Zach Shallbetter
Oh ok itu terkait dengan ekstra (setelah ('DOING_AJAX')
Zach Shallbetter
Oh maaf; itu disengaja. Seharusnya ada satu lagi yang ditutup di akhir. Saya menambahkannya ke jawabannya.
John P Bloch
Apakah ada alasan mengapa ini tidak berfungsi dengan tema 2011 dan plugin anggota?
Zach Shallbetter
1
Tampaknya ini tidak berfungsi di situs jaringan, ada ide mengapa?
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
sumber
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
sumber