我有以下代码:http://pastebin.com/ng99augD
它基本上为我在每个代码块的查询帖子中指定的五个作者发出五个帖子,然后在下一个查询之前倒回帖子。这远非理想,并且想要使代码更有效,而不必一遍又一遍地重复帖子的所有模板代码。我也希望它们是随机顺序而不是按照它们编写的顺序出现,因为我不希望任何特定的作者在顶部。感谢。
答案 0 :(得分:1)
我不确定为什么需要使用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次查询以显示5个帖子。要使用一个查询显示五个帖子并按照您想要的方式随机排序,请编辑五个帖子中的每一个并将它们分配到一个新类别,让我们说:'author sampler'。然后在您的模板文件中:
<?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;?>