author_id を指定すれば、個別に表示することができたのですが、
とのことですので、必要な点だけ。
登録されているユーザーの ID をすべて取得しつつ、権限が購読者、または投稿したことのないユーザーはスキップするような処理を行えばよいと思います。
$authors = $wpdb->get_results("SELECT ID, display_name FROM $wpdb->users;");
// $authors = $wpdb->get_results("SELECT ID, display_name FROM $wpdb->users WHERE user_login <> 'admin';"); // admin は隠した方が良いかも
if ( $authors ) {
// echo "<div>";
foreach ( $authors as $author ) {
$user_level = (int) get_usermeta( $author->ID, 'user_level' );
$user_numposts = (int) get_usernumposts( $author->ID );
if ( $user_level == 0 || $user_numposts == 0 ) continue;
$r = new WP_Query( array( 'author' => $author->ID, 'showposts' => 3 ) );
if ( $r->have_posts() ) {
$user_name = wptexturize( $author->display_name );
// echo "<h2>{$user_name}</h2>\n";
// echo "<ul>\n";
while ( $r->have_posts() ) {
$r->the_post();
$permalink = get_permalink( $post->ID );
$post_title = get_the_title( $post->ID );
$post_date = get_the_time( 'Y/m/d', $post->ID );
// echo get_archives_link( $permalink, $post_title, 'html', null, ' ' . $post_date );
}
// echo "</ul>\n";
}
}
wp_reset_query();
// echo "</div>\n";
}