Wordpress多循环

时间:2011-02-14 19:08:07

标签: themes wordpress-theming wordpress

当我们在同一页面中有多个循环时,哪个是最佳解决方案?我正在使用主循环:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php endwhile; endif; ?>

现在我想在同一页面(在不同的位置)为特定类别名称中的精选帖子添加一个新循环,这是您的最佳选择:(“内容”仅作为示例)

1-使用get_posts();

<?php global $post;
$args = array( 'category_name' => 'destaques' );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>

   "content"

<?php endforeach; ?>

2-使用WP_Query();

<php $my_query = new WP_Query("category_name=destaques");
while ($my_query->have_posts()) : $my_query->the_post(); ?>

   "content"

<?php endwhile; ?>

3:使用query_posts();

<?php query_posts( 'category_name=destaques' );
if (have_posts()) : while (have_posts()) : the_post(); ?> 

   "content"

<?php endwhile; endif; ?>

您选择哪个以及为什么?

感谢。

3 个答案:

答案 0 :(得分:3)

最佳选择是get_posts();

以下是Wordpress Function Reference for query posts

的推理
  

query_posts()函数是预期的   用于修改主页面   只循环。它不打算作为一个   意味着在上创建二级循环   页。如果要创建单独的   在主要的一个之外循环,你   应该使用get_posts()代替。用于   query_posts()在除了之外的循环上   主要的一个可以导致你的主循环   变得不正确,可能   展示你不是的东西   期待。

     

query_posts()函数覆盖   并替换了主要查询   页。为了节省您的理智,请不要使用   它用于任何其他目的。

     

query_posts()函数创建一个   新的WP_Query对象并将其分配给   全局wp_query变量。该   get_posts()函数创建一个新的   WP_Query对象没有覆盖   全球范围内的任何事情。

答案 1 :(得分:0)

我不确定别人,但我经常选择

<?php 
query_posts('showposts=1&cat=-48'); // our custom query
if ( have_posts() ) : while ( have_posts() ) : the_post();  // Start the loop
    $img = get_post_meta($post->ID, "postimage", $single = true);//any custom fields?
?>
    <a href="<?php the_permalink() ?>" title="Permanent Link to <?php the_title(); ?>">
      <img src="<?php echo $img; ?>" alt="<?php the_title(); ?>" />
    </a>
<?php
endwhile; endif;// End the Loop and Check for Posts
wp_reset_query(); // Reset the loop
?>
<div>stuff</div>
<?php 
query_posts('showposts=5&cat=5'); // our custom query
if ( have_posts() ) : while ( have_posts() ) : the_post();  // Start the loop
    $img = get_post_meta($post->ID, "postimage", $single = true);//any custom fields?
?>
    <h2>Title</h2>
    etc..etc..
<?php
endwhile; endif;// End the Loop and Check for Posts
wp_reset_query(); // Reset the loop
?>

这证明可以满足我的需求......

答案 2 :(得分:0)

我使用数字3.它更容易阅读和理解。