スポンサーリンク

get_usersのroleについて

作成しててちょっと躓いたので忘れないように私的メモ。

get_usersは引数渡すことで絞り込み条件を指定が取得が出来ますが
その中の「role」というキー名で’administrator’などを指定することで
目的の権限を絞り込んで取得できます。

ただ、こちらの「role」キーの指定では
一つの権限をそのままSQL条件に入れているだけなので複数に対しての指定が出来ません。
(配列による指定や、,(←カンマ)などによる指定も駄目)

つまりroleでは
=「投稿者と編集者を取り出す・・・」のような指定が出来ないという事です。

解決策

⇒meta_queryを利用する。

$blog_id = get_current_blog_id();
$args = array(
	'meta_query' => array(
		'relation' => 'OR',
		array(
			'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities',
			'value' => 'author',
			'compare' => 'like'
		),
		array(
			'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities',
			'value' => 'editor',
			'compare' => 'like'
		)
	)
);
$users = get_users( $args );

・・・こんな感じです。
Ver3.5以降はmeta_queryが使用できるのでそちらを利用します。
まぁget_usersは関数はキー「count_total」をfalseにしてから
WP_User_Query読んでるだけなので最後の行のget_users関数を使わずに

$user_query = new WP_User_Query( $args );
$users = $user_query->results;

でも良いと思います。