0

我有一个 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 循环(因为我需要通过 $number 获得唯一的 ID 号),但只能检索一次帖子?

谢谢!

4

2 回答 2

1

您确实使用两个循环结构将帖子翻了一番:thewhileforeach. 问题是:当 WP 调用您的category-3.php页面时,WP_Query 已经填充了类别 ID 3 的帖子。因此,您无需执行新查询来获取这些帖子。

因此,您可以单独使用每种解决方案之一,但不能一起使用:

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;
?>
于 2013-11-04T19:50:34.770 回答
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
?>
于 2013-11-04T19:48:31.233 回答