2012年11月12日 | | 标签: , ,

采用WordPress的WP_User_Query与WP_User结合实现排除了指定role的用户列表展示,经过不断的研究摸索,找到一个较为完美的实现方案,分享给大家:

<?php 
		$avatar_size = 100;
		$authors = array();
    	        $exclude = array('1');
        $authors_query = new WP_User_Query( array(
            'exclude' => $exclude,
            'orderby' => 'url',
	    'order' => 'ASC'
            ) );
        $results = $authors_query->get_results();
        if ($results) $authors = array_merge($authors, $results);

foreach($authors as $author) {

$user = new WP_User( $author->ID );
	//if ( !empty( $author->roles ) && is_array( $author->roles ) ) {

		foreach ( $user->roles as $role )
			if (($role)&&($role!="subscriber")) { 
				//$display_name = $author['display_name'];
				//$display_name = the_author($author['ID']);
				$avatar = get_avatar($author->ID, $avatar_size);
				//$author_desc = the_author_description($author['ID']);
				//$author_descri = the_author_meta( 'description' ,$author['ID']);
				$author_profile_url = get_author_posts_url($author->ID);
				echo '<div class="one-artist">';
				echo '<a href="'.$author_profile_url.'">';
				echo $avatar;
				echo '<br />'; 
				echo the_author_meta( 'display_name', $author->ID);
				echo '<br />'; 
				echo the_author_meta( 'description', $author->ID);
				echo '</a>';
				echo '</div>';
//}
}
			}
		 ?>

以上代码实现了排除admin用户和角色为subscriber的用户以外的所有用户,而且这个角色排除可以根据需要进行额外的扩展,排除多个角色。