query_post和have_posts问题

时间:2014-04-15 07:36:55

标签: php wordpress

我有20个帖子,我需要在每5个帖子后显示文字。所以我在stackoverflow中询问了查询,我得到了解决方案。我在我的网站上尝试过查询。我的代码是,

<?php
query_posts( array(orderby=>post_date, order=>desc) );
$p = 1;
while ( have_posts() ) : the_post();
?>
<div class="post">
<?php the_title(); ?>
<?php the_post_thumbnail(); ?>
</div>
<?php ($p%5 == 0) ? ($p/5): ""; ?>
<?php if($p==5):
echo hai;
elseif($p==10):
echo fine;
endif;
?>
<?php
$p++;
?>
<?php
endwhile; 
?>

在5个帖子后回复“海”和“精”时,它工作正常。

替换以下格式的代码时BUt。帖子无法正确获取。请有人帮帮我。我需要在第5个帖子后添加我自己的类别ID 3,在第10个帖子后添加类别ID 4

<?php
query_posts( array(orderby=>post_date, order=>desc) );
$p = 1;
while ( have_posts() ) : the_post();
?>
<div class="post">
<?php the_title(); ?>
<?php the_post_thumbnail(); ?>
</div>
<?php ($p%5 == 0) ? ($p/5): ""; ?>
<?php if($p==5):
    if (have_posts()) :
    query_posts( array(cat=>3, orderby=>post_date, order=>desc) );
    while (have_posts()) : the_post(); ?>
    <?php the_title(); ?>
    <?php endwhile; ?> 
    <?php endif; 
elseif($p==10):
echo fine;
endif;
?>
<?php
$p++;
?>
<?php
endwhile; 
?>

in echo fine;我需要添加上面使用的相同代码来代替echo hai;

1 个答案:

答案 0 :(得分:0)

使用wp_reset_query()

wp_reset_query()恢复$ wp_query。

<?php
query_posts( array(orderby=>post_date, order=>desc) );
$p = 1;
while ( have_posts() ) : the_post();
?>
<div class="post">
<?php the_title(); ?>
<?php the_post_thumbnail(); ?>
</div>
<?php ($p%5 == 0) ? ($p/5): ""; ?>
<?php if($p==5):
    if (have_posts()) :
    wp_reset_query();
    query_posts( array(cat=>3, orderby=>post_date, order=>desc) );
    while (have_posts()) : the_post(); ?>
    <?php the_title();
       ?>
    <?php endwhile; ?> 
    <?php endif; 
elseif($p==10):
     wp_reset_query(); 
    if (have_posts()) :
    wp_reset_query();
    query_posts( array(cat=>3, orderby=>post_date, order=>desc) );
    while (have_posts()) : the_post(); ?>
    <?php the_title(); ?>
    <?php endwhile; ?> 
    <?php endif; 
endif;
$p++
?>

<?php
endwhile; 
?>