按类别获取不是第一个的最新帖子

时间:2012-09-14 作者:a_user

Possible Duplicate:
Duplicate posts

我正在尝试创建一个主页,其中有一个top posts部分,显示三篇最新的文章(针对所有类别),以及仅显示该类别最新文章的类别子部分。

我知道如何做到这一点,但我不知道如何确保没有任何重叠(我不希望任何帖子同时出现在页面的顶部和类别部分)。有没有一种有效的方法可以做到这一点?

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

嗯,你会有很多循环和很多自定义WP_Query 对象。

要开始,请创建$all_posts 变量,然后在主页上启动主循环。你应该把这些都放在你的front-page.php 样板

<?php
$all_posts = array();
while(have_posts()): the_post();
    $all_posts[] = $post->ID;
    // do stuff with the main loop here
endwhile;
在每个后续循环中,使用$all_posts 变量以排除已发生的帖子。假设您要为类别创建循环term_id\'s1, 2, 和3:

<?php
foreach(array(1, 2, 3) as $cat))
{
    $cat_query = new WP_Query(array(
        \'cat\'   => $cat,
        \'post__not_in\' => $all_posts,
    ));
    if($cat_query->have_posts()
    {
        while($cat_query->have_posts())
        {
            $cat_query->the_post();
            $all_posts[] = $post->ID;
            // display stuff here
        }
    }
}
只需继续将post ID附加到$all_posts 变量,以确保后续查询不包括已看到的帖子。

结束

相关推荐

List author's posts with SQL

我想用下面的代码显示作者的帖子,但不显示作者的姓名。怎么了?<? // query test $qry = $wpdb->get_results( $wpdb->prepare(\" SELECT * FROM $wpdb->posts WHERE post_type =\'post\' AND post_status=\'publish\' order by \'ID\' DESC LIMIT 5 \"));