特定のユーザーロールからダッシュボードアクセスを削除するにはどうすればよいですか?


11

特定のユーザーロールがダッシュボードhttp://www.openeye.net/wp-admin/にアクセスできないようにしたいのですが。ユーザープロファイルをサイトに表示できる新しいページに移動してスタイルを変更しました。これを行うにはどうすればよいですか?


WooCommerceに設定の変更をリクエストしたので、メニューの一部の認証を管理できます。このアイデアには投票が必要です:https : //ideas.woocommerce.comありがとうございます。
Stefan

回答:


22

サブスクライバーとコントリビューターを管理者からロックするには:

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

お役に立てば幸いです。すべてのロールは、ユーザーにそのロールの名前である機能を提供するため、任意のロール名を機能として使用できます。


すばらしいですが、2行目に構文エラーが発生します。
ザックシャルベター11/07/14

ああ、それはエクストラに関連しています(( 'DOING_AJAX'の後)
Zach Shallbetter

あ、ごめんなさい; それは意図的でした。最後に別の閉店があるはずだった。答えに追加しました。
John P Bloch

これが2011テーマとメンバープラグインで機能しない理由はありますか?
Zach Shallbetter

1
これはネットワークサイトでは機能しないようですが、なぜですか?
Zach Shallbetter、2011年

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();
      }
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.