<?php if (have_posts()) : while (have_posts()) : the_post(); ?>, то всё как и надо нормально выводится.<?php if (have_posts()) : ?>
<?php query_posts('posts_per_page=5'); ?>
<?php while (have_posts()) : the_post(); ?>, то выводятся посты всех авторов.query_posts, может есть какой-то способ?<?php if (have_posts()) : while (have_posts()) : the_post(); ?>function author_per_page( $query ) {
if( is_author() && !is_admin() && $query->is_main_query() ) {
$query->set( 'posts_per_page', 5 );
}
add_action( 'pre_get_posts', 'author_per_page' );
global $wp_query;
query_posts(
array_merge( // склеиваем массивы
$wp_query->query, // это массив базового запроса текущей страницы
array('posts_per_page' => 5) // это параметры который добавили мы
)
);
// Дальше цикл