web-dev-qa-db-ja.com

「スーパー管理者」ではないもののためにすべてのユーザーから「スーパー管理者」を削除する方法?

「スーパー管理者」ではないユーザーに対して「スーパー管理者」と表示されている上部のフィルターを削除したいと思います。どうやってこれをやるの?

このスクリーンショットは私が話していることを示しています: enter image description here

2
Matt

管理画面の上部にあるこのフィルタのリストは、ビューと呼ばれます。 views_{$this->screen->id}フィルタを使用してビューを管理できます。 {$this->screen->id}を管理したいスクリーンの名前に置き換えます。

Usersスクリーンをフィルタリングするために、以下を試すことができます。

// filter the 'users' views
add_filter( "views_users", "wse57231_filter_user_views");

function wse57231_filter_user_views($views){
  // This assumes the key for the role is 'super_admin'
  // Is the current user not a "super_admin"?

  if( !current_user_can('super_admin')){
    // Remove the super_admin view from the list of views
    unset($views['super_admin']);
  }

  return $views;
}

参考文献:* https://developer.wordpress.org/reference/hooks/views_this-screen-id/ * http://codex.wordpress.org/Function_Reference/current_user_can

注:コメントによると、Super Adminは作成したカスタムロールです。 Super AdminはWordPress Multisiteを使用する際の特別な役割の名前でもあるため、これは部分的に混乱を招きます

1
sxalexander