在wordpress的foreach中,foreach正在获得第一个foreach的价值

时间:2012-07-07 18:38:05

标签: wordpress loops foreach

很抱歉这个令人困惑的标题。我在wordpress中显示帖子列表,并使用foreach从每个帖子显示图像,标题等。我需要的是每个帖子都有一个导航,它使用锚点提供指向同一页面内其他帖子的链接。

我在第一个中创建了另一个foreach,它再次抓取相同的帖子并生成导航。这一切都很好,除了每个导航链接的值对于每个帖子中的每个链接都是相同的。

例如,如果帖子被称为post1和post2,则post1中的导航应该有一个指向post1和post2的链接,而是两个链接都转到post1。同样在post2中导航应该有一个指向post1和post2的链接,但两个链接都转到post2:

 //first foreach gets all the posts

 <?php
 $portfolioItems = array( 'numberposts' => 10, 'order'=> 'DESC', 'orderby' => 'title', 'category' => 4 );
 $postslist = get_posts( $portfolioItems );
 foreach ($postslist as $post) :  setup_postdata($post); ?> 



// navigation which grabs the same posts and creates a list out of them

<ol>
<?php $portfolioNav = array( 'numberposts' => 10, 'order'=> 'DESC', 'orderby' => 'title', 'category' => 4 );
 $postsnav = get_posts( $portfolioNav );
 foreach ($postsnav as $postnav) :  setup_postdata($postnav); ?>
 <li><a href="<?php the_field('portfolio_anchor'); ?>"><?php the_field('portfolio_anchor'); ?></a></li>
 <?php endforeach; ?>
 </ol>


// The data getting pulled from the first foreach 
 <div id="<?php the_field('portfolio_anchor'); ?>"></div>
 <h3><?php the_title(); ?></h3>
<img src="<?php the_field('main_image'); ?>" />

<?php endforeach; ?>

1 个答案:

答案 0 :(得分:0)

使用query_posts而不是get_posts管理解决它:

 <?php query_posts('category_name=Portfolio&posts_per_page=10&orderby=title&order=DESC'); ?>
  <?php while (have_posts()) : the_post(); ?>

然后对于嵌套查询我做了同样的事情,但在它的末尾添加了wp_reset_postdata,所以它没有覆盖原始查询:

     <!-- navigation nested query -->
    <div class="row">
    <div class="span12 foliodivider" style="display: block;">   
    <ol>
    <?php $navNumber = 1; ?>
    <?php $my_query = new WP_Query('category_name=Portfolio&posts_per_page=10&orderby=title&order=DESC'); ?>
     <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <li><a href="#<?php the_field('portfolio_anchor'); ?>"><?php echo $navNumber; $navNumber++; ?></a></li>
    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
   </ol>
  </div>
 </div>
 <!-- navigation nested query end-->

然后,在完成第一个查询后,最后在最后结束时添加了最后一个结尾:

  <div id="<?php the_field('portfolio_anchor'); ?>"></div>
  <h3><?php the_title(); ?></h3>
  <img src="<?php the_field('main_image'); ?>" />
  <?php endwhile; ?>