0

对不起,令人困惑的标题。我在 wordpress 中显示帖子列表,并使用 foreach 显示每个帖子的图像、标题等。然后我需要的是每个帖子都有一个导航,该导航使用锚点提供指向同一页面内其他帖子的链接。

我在第一个 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; ?>
4

1 回答 1

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

然后在我使用第一个查询完成后,最后在最后添加了最后一个 endwhile:

  <div id="<?php the_field('portfolio_anchor'); ?>"></div>
  <h3><?php the_title(); ?></h3>
  <img src="<?php the_field('main_image'); ?>" />
  <?php endwhile; ?>
于 2012-07-07T21:44:28.253 回答