查询每月拉取一条帖子

时间:2011-07-19 作者:danixd

我试图每月只在查询中显示一篇帖子。

我可以将日期设置为变量,并使用php array_unique function 检查日期,只回显唯一的日期,但这感觉有点“骇客”。是否有内置的查询变量,或者我可以使用WordPress中的内置变量?

至于“hacky”选项,我对PHP还很陌生,正在努力使用前面提到的函数。检查日期是唯一的,只有当它已经在while循环中时才呼出所说的变量,这让我有些困惑。

下面是我当前使用的查询。

<?         
    $news_archive = array(      
        \'post_type\'=> \'news\',
        \'posts_per_page\' => 6,
        \'orderby\' => \'date\'
    );

    query_posts($news_archive);  

        echo \'<ul class="related_links">\';   

    while ( have_posts() ) : the_post();  

        $date = the_date(\'F m Y\',\'\',\'\',false);
        $date = explode(\' \', $date);    

        $month_str = $date[0];
        $month_int = $date[1];
        $year = $date[2];            

        echo \'<li><a href="/archive/news/\' . $year . \'/\' . $month_int . \'/">\';
        echo $month_str . \' \' . $year;          
        echo \'</a></li>\';     

    endwhile;     

        echo \'</ul>\';   

    endif;

    wp_reset_query(); 

?>

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

也许没那么刻薄:

$months = array();

while(....){

  list($month, $year) = explode(\'/\', get_the_date(\'n/y\')); // eg. 7/11
  if(in_array($month, $months)) continue; // skip

  $months[] = $month;

  echo \'<li><a href="\'.get_month_link($month, $year).\'">\'.get_the_date(\'F Y\').\'</a></li>\';

}
如果你只收到6篇帖子,而且你不需要分页,那么我想这样就可以了。

否则,您需要构建自己的SQL查询,以便每个月只发布一篇帖子。。。

您还可以尝试每月进行6次查询,例如:

$january_posts = new WP_Query(\'monthnum=1&posts_per_page=1\'));

结束