[英]WP_Query and posts_per_page from shortcode only returning one post (WordPress)
[英]Wordpress WP_Query posts_per_page not returning correct number of posts
我浏览了有关该主题的其他文章,找不到任何原因说明我的代码的行为。 我正在浏览我的类别列表,并从每个类别中选择一个最新的帖子。 我遇到的问题是,即使我使用的是'posts_per_page'=> 1,代码也会返回类别中的每个帖子。 这是我在下面使用的代码:
<?php $categories = get_categories(array('exclude'=>array(1, 8)));
foreach ($categories as $category) {
$args = array(
'cat' => $category->term_id,
'posts_per_page' => 1,
'orderby' => 'date'
);
$query = new WP_Query($args);
while($query->have_posts()):$query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>">
<div class="post-cat"><span>Latest</span> <?php echo $cat>name; ?></div>
<div class="post-image"><img src="<?php the_post_thumbnail_url('large'); ?>" alt="<?php the_title(); ?>" /></div>
<div class="post-title"><?php the_title(); ?></div>
<?php the_excerpt ();?>
<div class="post-date"><?php the_time('F jS, Y'); ?></div>
</a>
</li>
<?php endwhile; ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
例:
我有一个名为“操作方法”的类别,应该从该类别返回最新帖子,但是上面的代码显示了选中该类别的两个帖子。
编辑:这是$ categories请求的结果:
Array ( [0] => WP_Term Object ( [term_id] => 3 [name] => Events [slug] => events [term_group] => 0 [term_taxonomy_id] => 3 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw [cat_ID] => 3 [category_count] => 1 [category_description] => [cat_name] => Events [category_nicename] => events [category_parent] => 0 ) [1] => WP_Term Object ( [term_id] => 10 [name] => How To [slug] => how-to [term_group] => 0 [term_taxonomy_id] => 10 [taxonomy] => category [description] => [parent] => 0 [count] => 2 [filter] => raw [cat_ID] => 10 [category_count] => 2 [category_description] => [cat_name] => How To [category_nicename] => how-to [category_parent] => 0 ) [2] => WP_Term Object ( [term_id] => 4 [name] => Interviews [slug] => interviews [term_group] => 0 [term_taxonomy_id] => 4 [taxonomy] => category [description] => [parent] => 0 [count] => 2 [filter] => raw [cat_ID] => 4 [category_count] => 2 [category_description] => [cat_name] => Interviews [category_nicename] => interviews [category_parent] => 0 ) [4] => WP_Term Object ( [term_id] => 2 [name] => People [slug] => people [term_group] => 0 [term_taxonomy_id] => 2 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw [cat_ID] => 2 [category_count] => 1 [category_description] => [cat_name] => People [category_nicename] => people [category_parent] => 0 ) [6] => WP_Term Object ( [term_id] => 5 [name] => Results [slug] => results [term_group] => 0 [term_taxonomy_id] => 5 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw [cat_ID] => 5 [category_count] => 1 [category_description] => [cat_name] => Results [category_nicename] => results [category_parent] => 0 ) )
对于那些正在寻找这个问题的人。 我不得不通过使用以下代码来强制它仅显示最新的代码:
<?php $categories = get_categories(array('exclude'=>array(1, 8)));
foreach ($categories as $category) {
$args = array(
'category' => $category->term_id,
'numberposts' => 1,
'orderby'=>'date'
);
$query = get_posts($args);
$i = 0;
foreach($query as $post):setup_postdata($post); ?>
<?php if($i == 0) { ?>
<li>
<a href="<?php the_permalink(); ?>">
<div class="post-cat"><span>Latest</span> <?php echo $category->name; ?></div>
<div class="post-image"><img src="<?php the_post_thumbnail_url('large'); ?>" alt="<?php the_title(); ?>" /></div>
<div class="post-title"><?php the_title(); ?></div>
<?php the_excerpt ();?>
<div class="post-date"><?php the_time('F jS, Y'); ?></div>
</a>
</li>
<?php } $i++; ?>
<?php endforeach; ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
我对其进行了一些不同的设置,并添加了$ i检查,因此它仅在每个循环中使用第一个匹配项。 这可能不是最有效的方法,因此,如果有人对提高代码效率提出建议,我会喜欢的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.