こんにちは
ちょっと複雑な 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' );
返事が遅くなり大変申し訳ありません。
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
);
ishitaka様、迅速な対応ありがとうございます。
大変助かりました。
絞り込みで検索に関しては解決いたしました。
しかし、ここで別の問題といいますか気になる点が出てきたいのですがよければ別のスレを立てますのでご回答いただければ助かります。
宜しくお願い致します。
新しいトピックが作成できません。同じ症状のかたおられますでしょうか?
困りました..
新しく作成トピックがいつの間にか反映されていました。
ありがとうございました。