2012-07-07 80 views
0

对不起,令人困惑的标题。我在wordpress中显示帖子列表,并使用foreach显示来自每个帖子的图像,标题等。然后我需要的是每个帖子都有一个导航,它使用锚点在同一页面中提供到其他帖子的链接。foreach中的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; ?> 
+0

也许我错过了一些东西,但没有理由有第二个循环。所以删除foreach&get_posts。它应该工作然后 – dciso 2012-07-07 18:43:55

+0

我想我需要第二个foreach创建链接到其他职位,否则每个导航列表将只有1个链接 - 一个链接本身。 – 2012-07-07 18:47:55

+0

好的,那么在第二个循环中重复使用$ postslist。没有必要再次召回get_posts – dciso 2012-07-07 18:52:57

回答

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--> 

然后finaly添加的最后ENDWHILE在很我完成后使用第一个查询结束:

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