29

現在のユーザーが管理者であるかどうかを確認したいのですが、残念ながら current_user_can() を使用するとエラーが発生するため、グローバル $current_user を使用しています。しかし、管理者ユーザーであってもif部分に入ることができませんでした..これを修正するにはどうすればよいですか?

global $current_user;
if ($current_user->role[0]=='administrator'){
function hide_post_page_options() {
//global $post;
// Set the display css property to none for add category and add tag functions
$hide_post_options = "<style type=\"text/css\"> .jaxtag { display: none; } #category-adder { display: none; } </style>";
print($hide_post_options);
}
add_action( 'admin_head', 'hide_post_page_options'  );
}
4

8 に答える 8

52

次のようなことを試してください。

if ( current_user_can( 'manage_options' ) ) {
    /* A user with admin privileges */
} else {
    /* A user without admin privileges */
}

current_user_can関数の詳細については、こちらをご覧ください。

于 2013-11-06T06:44:56.040 に答える
10

これは私のために働く:

  global $current_user;

  if( !empty($current_user->roles) ){
    foreach ($current_user->roles as $key => $value) {
      if( $value == 'administrator' ){
        Do Something
      }
    }
  }

マルチサイト設定でない場合は、これを使用して管理者を検出できます。マルチサイトの場合、これはスーパー管理者に対してのみ true を返します。

  $user_ID = get_current_user_id();
  if($user_ID && is_super_admin( $user_id )) {
    Do Something
  }
于 2013-12-12T10:31:53.367 に答える
6

この質問への回答は遅すぎますが、私のように誰かがここにたどり着いたら、とにかく役に立つかもしれないと思います.

この問題の迅速な解決策が必要でした-現在のユーザーが管理者かどうかを確認してください。

WPコーデックスから、使用する簡単な解決策を得ました..

if(is_super_admin($user_id)) {
  // do stuff for the admin user...
}

WP-Codex によると、現在ログインしているユーザーがネットワーク (スーパー) 管理者である場合、この関数は True を返します。この関数は、ネットワーク モードが無効になっていても、現在のユーザーが admin であっても True を返します

于 2016-10-17T03:42:17.957 に答える
0
$user=wp_get_current_user();
if(in_array("administrator", $user->roles)){
  //user role is admin
}
于 2017-11-14T12:08:36.697 に答える