2010-08-23 93 views
0

我有以下代码:http://pastebin.com/ng99augDWordPress的倒带帖子

它基本上吐出来的五位作者我已经在每个代码块查询的职位指定的五个职位,然后倒带之前,下一个查询的帖子。这非常不理想,并希望使代码更加高效,而不必重复所有帖子的模板代码。我也希望他们能够按照随机顺序排列,而不是按照他们写的顺序排列,因为我不希望任何特定的作者位于顶部。谢谢。

+0

有没有更新?我研究过将所有循环代码放入函数中,然后在每个query_posts后调用它,但是如何让它们随机出现在页面上,而不是按照我写入的顺序。 – Cameron 2010-08-24 09:36:48

回答

1

我不确定为什么使用rewind_posts()是必要的。您正在使用每次使用query_posts()来创建一个新查询。 rewind_posts()倒带查询以重新使用。

如果您的表现没有受到影响,那么运行5个查询以获得您的5位作者可能没问题。每次至少有两个选项时,为避免重写相同的模板代码。创建它的模板代码PHP文件,并将其包含在每次需要的时间:

<?php include('author_posts.php');?> 

或者,更好,创造你的functions.php或接受查询结果的插件文件功能并输出模板。

function my_authors($posts){ 
    //template code here, using $posts->ID, $posts->post_content, etc 
} 

第三个选项,这样做可以清理你的代码和查询的数量是使用一个类别来显示赋予的帖子:

<?php $posts = query_posts('posts_per_page=1&author=author1'); 
    if(function_exists('my_authors')){my_authors($posts);} 
?> 
到functions.php或插件

然后在这里。您正在进行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;?> 
+0

我不想为作者使用类别。我已经为代码使用了一个函数,然后只是为每个query_posts调用调用它。问题是让它们随机显示(使用order_by = rand将只适用于实际查询本身,而不是页面上所有查询的顺序) – Cameron 2010-08-25 10:53:31