posts_per_page=-1
非常好。这用于获取所有帖子。至于你的代码,你永远不应该使用query_posts
除非你想故意破坏网页上的内容。这是最常用的功能之一,也是导致网站问题最多的功能之一。
我最近发表了一篇关于自定义查询的帖子,并包含了许多重要链接,指向您需要的重要帖子have to 阅读,包括为什么不应该使用query_posts
. 你在上一个问题中说过,你需要学习很多,好吧,这篇文章和链接的文章应该是一条很好的学习曲线:-)。请检查一下here.
我觉得您的代码非常奇怪的是,您正在使用一个计数器来计算类别ID。这确实是不可预测的,因为所有标记、类别和自定义分类术语以及post格式都共享相同的表,因此对于给定的分类法,ID不是连续的。你应该利用get_categories()
要gt所有类别的数组。更可靠,而且您拥有exclude
参数以排除类别和include
仅需要特定类别时的参数
您需要为每个类别运行单独的查询。这可能会占用大量资源,因此您可能希望将结果放入瞬态(检查this post) 或缓存。
您可以尝试以下内容:
$categories = get_categories(array(\'exclude\' => \'4, 7\'));
foreach ($categories as $category) {
$args = array(
\'cat\' => $category->cat_ID,
\'posts_per_page\' => 3
);
$q = new WP_Query($args);
while($q->have_posts()) {
$q->the_post();
//your template tags and HTML mark up
}
wp_reset_postdata();
}
编辑最后一个音符,这是我最初错过的,你只能做一个
while()
循环,而不是像您的问题中的两个:-)