我制作了一个自定义主页(带有模板),在这个网站上使用了三个循环:两个类别循环,在网站底部是页面的主循环(页面内容)。问题是:第一个循环很好,但第三个(主页循环)是从另外两个循环中的一个循环内容,而不是从实际的站点!?!
我认为这是因为主页循环是该页面上的最后一个循环。我怎样才能避免呢?
这是我的代码:
第一个循环:
<?php
$posts = get_posts(\'category_name=slider\');
foreach($posts as $post) :
setup_postdata($post);
?>
<div class="startslide" style="background-image:url(<?php $src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), array( 670,320 ), false, \'\' ); echo $src[0]; ?>)">
<h4><?php the_title(); ?></h4>
<div class="subline"><?php the_content(); ?></div>
</div>
<?php endforeach; ?>
第二个:
<?php
$posts = get_posts(\'category_name=meilensteine&numberposts=3\');
foreach($posts as $post) :
setup_postdata($post);
?>
<div class="meilpost">
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<p><?php echo excerpt(14); ?></p>
</div>
<?php endforeach; ?>
第三个(主页循环):
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
SO网友:stealthyninja
使用wp_reset_query()
在每个自定义查询之后:
<?php endforeach; ?>
<?php wp_reset_query(); ?>
您可能还想看看
wp_reset_postdata()
功能,这可能更适合您。
Update
试试这个:
<?php
global $post;
$tmp_post = $post;
$my_posts = get_posts( \'category_name=slider\' );
foreach ( $my_posts as $my_post ) :
setup_postdata( $my_post );
?>
<div class="startslide" style="background-image:url(<?php $src = wp_get_attachment_image_src( get_post_thumbnail_id( $my_post->ID ), array( 670,320 ), false, \'\' ); echo $src[0]; ?>)">
<h4><?php the_title(); ?></h4>
<div class="subline"><?php the_content(); ?></div>
</div>
<?php endforeach; ?>
<?php $post = $tmp_post; ?>
<?php
$tmp_post = $post;
$my_posts = get_posts( \'category_name=meilensteine&numberposts=3\' );
foreach ( $my_posts as $my_post ) :
setup_postdata( $my_post );
?>
<div class="meilpost">
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<p><?php echo excerpt(14); ?></p>
</div>
<?php endforeach; ?>
<?php $post = $tmp_post; ?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>