如何将访问过的帖子排除在循环之外

时间:2012-05-24 作者:Pollux Khafra

如何从循环中排除已访问的帖子?我在一个帖子页面上有一个最近帖子的循环,不包括当前帖子,我想通过过滤掉用户已经看到的帖子来延长用户浏览的次数。这是基本循环。

<?php
 $featured_post_id = get_the_ID();
 global $post;
 $args = array(\'cat\' => \'9\', \'posts_per_page\' => 5, \'post__not_in\' => array($featured_post_id));
 $my_query = new WP_Query($args);
 if ( $my_query->have_posts() ) : ?>

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

这是一个比你想象的更重的问题。您需要做很多工作:

在用户浏览器中设置cookie,以跟踪他们看到的帖子

  • 从该cookie中提取数据以获取帖子ID列表,并使用$featured_post_idpost__not_in 参数
  • 我不会处理前两个问题。。。设置和读取Cookie不是WordPress的问题,您可以通过simple Google search.

    但对于其余部分,您的代码将如下所示:

    // get_previously_viewed_posts() will retrieve a list of viewed post IDs from a user cookie.
    $posts_to_exclude = get_previously_viewed_posts();
    
    // Add the current post ID to the array of posts to ignore.
    $posts_to_exclude[] = get_the_ID();
    
    $args = array(
        \'cat\'            => \'9\', 
        \'posts_per_page\' => 5, 
        \'post__not_in\'   => $posts_to_exclude
    );
    
    $my_query = new WP_Query( $args );
    
    if ( $my_query->have_posts() ) : while ( $my-query->have_posts() ) : $my-query->the_post();
    
        // the loop
    
    endwhile; endif;
    

    结束

    相关推荐

    WordPress Posts By Date/Day?

    我想在主页上输出最近3天的帖子。像这样:2012年3月30日 post 1 post 2 post 3 2012年3月29日 post 1 post 2 post 3 2012年3月28日 post 1 post 2 post 3 我试过:2012年3月30日,我有5个职位2012年3月29日,我有4个职位2012年3月28日,我有3个职位因此,第三天缺少2个帖子