サポート » 使い方全般 » 管理画面のユーザー一覧から権限が管理者以下で管理者の表示を非表示にしたい

  • 解決済 luvjapan

    (@luvjapan)


    管理画面のユーザー一覧から権限が管理者以下で管理者の表示を非表示にしたいのですが何か良い方法はありませんでしょうか?
    CSSのdisplay:noneやjQueryのhide,removeやプラグインを使用しない方法がございましたら教えて下さい。
    宜しくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは

    ちょっと複雑な SQL クエリになってしまいましたが、下記のコードでどうでしょうか。

    functions.php 等に

    function my_pre_user_query( $uqi ) {
    	global $pagenow;
    	if( $pagenow == 'users.php' ) {
    		$current_user = wp_get_current_user();
    		if ( $current_user->roles[0] != 'administrator' ) { 
    			global $wpdb;
    			$uqi->query_where = str_replace(
    				'WHERE 1=1',
    				"WHERE 1=1 AND {$wpdb->users}.ID IN (" .
    					"SELECT {$wpdb->usermeta}.user_id FROM {$wpdb->usermeta} " .
    					"WHERE {$wpdb->usermeta}.meta_key='{$wpdb->prefix}capabilities' " .
    					"AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%'" .
    				')',
    				$uqi->query_where
    			);
    		}
    	}
    }
    add_action( 'pre_user_query','my_pre_user_query' );
    トピック投稿者 luvjapan

    (@luvjapan)

    返事が遅くなり大変申し訳ありません。
    ishitaka様のコードにより狙った通りの表示ができました。
    助かりました。ありがとうございます。
    こちらのコードなのですがプラスでさらに制限する権限を増やしていきたい場合は
    "AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%'" .以下に
    "AND {$wpdb->usermeta}.meta_value NOT LIKE '%editor%'" .
    "AND {$wpdb->usermeta}.meta_value NOT LIKE '%author %'" .
    と追加していけばよろしいでしょうか?
    また追加で特定のUsers IDを指定して非表示にする場合の方法がありましたらご教授いただければ幸いです。
    宜しくお願い致します。

    制限する権限を追加する場合は、下記のようなコード(抜粋)になります。

    $uqi->query_where = str_replace(
    	'WHERE 1=1',
    	"WHERE 1=1 AND {$wpdb->users}.ID IN (" .
    		"SELECT {$wpdb->usermeta}.user_id FROM {$wpdb->usermeta} " .
    		"WHERE {$wpdb->usermeta}.meta_key='{$wpdb->prefix}capabilities' " .
    		"AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%' " . // <- 念のため最後に空白を入れる
    		"AND {$wpdb->usermeta}.meta_value NOT LIKE '%author%'" . // <- 追加
    	')',
    	$uqi->query_where
    );

    特定のユーザーで制限する場合は、下記のようなコード(抜粋)になります。
    999 の部分は、実際のユーザー ID を記述してください。
    元のコードとの、シングルクウォーテーションとダブルクウォーテーションの違いに注意してください。

    $uqi->query_where = str_replace(
    	'WHERE 1=1',
    	"WHERE 1=1 AND {$wpdb->users}.ID IN (" .
    		"SELECT {$wpdb->usermeta}.user_id FROM {$wpdb->usermeta} " .
    		"WHERE {$wpdb->usermeta}.meta_key='{$wpdb->prefix}capabilities' " .
    		"AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%'"
    	") AND {$wpdb->users}.ID<>999", // <-追加
    	$uqi->query_where
    );
    トピック投稿者 luvjapan

    (@luvjapan)

    ishitaka様、迅速な対応ありがとうございます。

    大変助かりました。

    絞り込みで検索に関しては解決いたしました。

    しかし、ここで別の問題といいますか気になる点が出てきたいのですがよければ別のスレを立てますのでご回答いただければ助かります。

    宜しくお願い致します。

    トピック投稿者 luvjapan

    (@luvjapan)

    新しいトピックが作成できません。同じ症状のかたおられますでしょうか?
    困りました..

    トピック投稿者 luvjapan

    (@luvjapan)

    新しく作成トピックがいつの間にか反映されていました。

    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「管理画面のユーザー一覧から権限が管理者以下で管理者の表示を非表示にしたい」には新たに返信することはできません。