get_posts()显示所有的职位总是相同的标题

问题描述:

我想用这一段代码来显示特定类别的职位在一个WordPress网站的首页:get_posts()显示所有的职位总是相同的标题

<?php $args = array('category' => 2); 
      $news = get_posts($args); 

      foreach ($news as $new) : setup_postdata($new); ?> 

      <img data-slidecaption="<div class='caption'><h2><?php the_title(); ?></h2><p><?php the_excerpt(); ?></p><a href='<?php the_permalink(); ?>'>Leggi tutto</a></div>" src=""> 
    <?php endforeach; 
    wp_reset_postdata();?> 
    </div> 

我有,例如,三个职位与头衔:帖子1,2后,邮政3.

查询工作正常,并且正确地显示每个帖子的内容,但标题总是从最新的帖子之一。永久链接也是如此。我究竟做错了什么?

+0

至于我记得,'the_title()'应该在'loop'使用。这可能会引起误解,但使用“foreach”并不是WP定义为“循环”的东西。 – 2014-10-03 16:29:06

+0

它可以是有意义的,但我直接从实例图克代码的文件中:http://codex.wordpress.org/Template_Tags/get_posts – Carlo 2014-10-03 16:42:53

+0

也许有在此之前彼此循环。 尝试在'foreach'之前添加'wp_reset_postdata();'。 – 2014-10-03 16:44:26

the_title()显示当前职位/页活跃在循环的称号。 get_posts进行独立查询,而不会影响您的主循环。使用

<?php echo $new->post_title; ?> 

显示新闻项目的标题。

或者,它甚至会更好,应用正确的过滤器藏汉:

<?php echo apply_filters('the_title', $new->post_title); ?> 

对于固定链接,使用

<?php echo get_permalink($new->ID); ?> 
+0

感谢您的答案。括号之间的争论应该是身份证,而不是帖子标题,正如Sunil Chaudhary在他的回答中所做的那样 – Carlo 2014-10-04 10:01:37

+1

这就是对的。虽然,因为你已经有了标题,实际上根本不需要使用get_the_title。我编辑得适当。 – MSTannu 2014-10-04 14:27:13

使用<?php echo get_the_title($new->ID);?>的标题和你的循环 使用<?php echo get_permalink($new->ID); ?>用于固定链接,你会得到你想要的结果。我无法弄清楚你想要做什么,但按照我的编辑它会解决你的问题。

+0

我试图在幻灯片中显示最新的帖子,并在标题中使用标题和摘录。所以,这个解决方案的工作,但我仍然不明白为什么在文档中的例子是不同的:http://codex.wordpress.org/Template_Tags/get_posts – Carlo 2014-10-04 10:05:11