我有一个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号码$),但只能检索一次帖子?
谢谢!
答案 0 :(得分:1)
您确实使用两个循环结构将帖子加倍:while
和foreach
。事情是:当WP呼叫你的category-3.php
页面时,WP_Query已经填充了类别ID 3的帖子。因此,你不需要来执行新的查询来获取这些帖子。< / p>
因此,您可以使用每个解决方案中的一个单独,但不能同时使用
while
(推荐)<?php
$number = 0;
global $post;
if ( have_posts() ) while ( have_posts() ) : the_post() ;
setup_postdata($post);
$number++;
endwhile;
?>
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
?>