WordPress 3.7以上で簡単にメディア表示をアップロードしたユーザーのみに限定する

なんとも時が経つのは早いもので、ちょっとほっておいたら、ほぼ1年ぶりの更新になってしまいました。

つい先日、コードを見ていて気がついたのですが、メディアの一覧を取得する関数 wp_ajax_query_attachments に WordPress 3.7 から、ajax_query_attachments_args フィルターが追加されていることに気がつきました。(遅

	/**
	 * Filter the arguments passed to WP_Query during an AJAX
	 * call for querying attachments.
	 *
	 * @since 3.7.0
	 *
	 * @see WP_Query::parse_query()
	 *
	 * @param array $query An array of query variables.
	 */
	$query = apply_filters( 'ajax_query_attachments_args', $query );

このフィルターで受け取る値には、WP_Queryによるメディアの抽出条件が格納されており、受け取った値を変更することで抽出条件を自由に変更することが可能です。このフィルターを通った値は、そのままWP_Queryに渡っていきますので、WP_Query で指定可能なパラメータであれば、なんでも指定可能となっています。

これを踏まえて、メディアの表示をアップロードしたユーザーのみに限定する最新で簡単な方法は、以下のコードとなります。

function display_only_self_uploaded_medias( $query ) {
	if ( $user = wp_get_current_user() ) {
		$query['author'] = $user->ID;
	}
	return $query;
}
add_action( 'ajax_query_attachments_args', 'display_only_self_uploaded_medias' );

このコードの方が以前よりも簡単ですし、間違いのないものですから、是非ともこちらを使うようしてくださいな。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です