Wordpress类别模板页面加倍帖子

时间:2013-11-04 16:31:07

标签: wordpress-theming wordpress

我有一个category-3.php模板文件,它显示了ID3的类别,其中我有一个循环,如下所示:

<?php if ( have_posts() ) while ( have_posts() ) : the_post() ; ?>

<?php           
$myposts = get_posts('posts_per_page=-1&category=3');

$number = 0;

if($myposts):
foreach($myposts as $post) :
  setup_postdata($post); 
  $number++; // for making every iteration unique
?>

wordpress显示帖子加倍,我认为这可能是因为$ myposts和foreach循环。 我如何保持foreach循环(因为我需要一个唯一的ID号码$),但只能检索一次帖子?

谢谢!

2 个答案:

答案 0 :(得分:1)

您确实使用两个循环结构将帖子加倍:whileforeach。事情是:当WP呼叫你的category-3.php页面时,WP_Query已经填充了类别ID 3的帖子。因此,你不需要来执行新的查询来获取这些帖子。< / p>

因此,您可以使用每个解决方案中的一个单独,但不能同时使用

1)使用while(推荐)

<?php 
$number = 0;
global $post;
if ( have_posts() ) while ( have_posts() ) : the_post() ; 
  setup_postdata($post); 
  $number++;
endwhile;
?>

或2)使用您的foreach

<?php           
$myposts = get_posts('posts_per_page=-1&category=3');
$number = 0;

if($myposts):
    foreach($myposts as $post) :
       setup_postdata($post); 
       $number++;
    endforeach;
endif;
?>

答案 1 :(得分:0)

您正在显示两次帖子,如果不是您要删除其中一个循环的话。

这会显示所有类别为ID 3的帖子

<?php if ( have_posts() ) while ( have_posts() ) : the_post() ; ?>

这会显示所有类别为ID 3的帖子

<?php           
$myposts = get_posts('posts_per_page=-1&category=3');

$number = 0;

if($myposts):
foreach($myposts as $post) :
  setup_postdata($post); 
  $number++; // for making every iteration unique
?>