Я не уверен, почему необходимо использовать rewind_posts()
. Вы создаете новый запрос, используя каждый раз query_posts()
. rewind_posts()
перематывает запрос на повторное использование.
Если ваша производительность не пострадает, возможно, будет хорошо выполнить 5 запросов, чтобы получить ваших пяти авторов. Чтобы не переписывать один и тот же код шаблона каждый раз, у вас есть как минимум два варианта. Создайте php-файл с кодом шаблона и включайте его каждый раз, когда вам это нужно:
<?php include('author_posts.php');?>
Или, что еще лучше, создайте функцию в вашем functions.php или в файле плагина, которая будет принимать результаты вашего запроса и выводить шаблон.
<?php $posts = query_posts('posts_per_page=1&author=author1');
if(function_exists('my_authors')){my_authors($posts);}
?>
Затем в вашем functions.php или плагине:
function my_authors($posts){
//template code here, using $posts->ID, $posts->post_content, etc
}
Третий вариант, который очищает ваш код и количество запросов , заключается в использовании категории для отображения сообщений, назначенных ей здесь. Вы делаете 5 запросов для отображения пяти сообщений. Чтобы использовать один запрос для отображения пяти сообщений и случайной сортировки, как вы хотите, отредактируйте каждое из пяти сообщений и назначьте их в новую категорию, скажем: «автор сэмплера». Тогда в вашем файле шаблона:
<?php $posts = get_posts('category=author sampler'&order_by=rand&order=asc');
foreach($posts as $post):?>
<?php setup_postdata($post);
//your posted template code follows:
?>
<article id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a><?php edit_post_link('Edit', ' (', ')'); ?></h2>
<p class="p-cat">In: <?php the_category('|') ?></p>
<p class="p-author">
<span class="name">
<?php the_author_posts_link(); ?></span> <span class="avatar"><?php echo get_avatar( $email, $size = '32' ); ?>
</span>
</p>
<?php //etc ?>
<?php endforeach;?>