2010-08-19 78 views
0

我正在构建的WordPress博客以杂志形式发布;每个月的第一天,几个(准确地说是九个)职位连续出版。当读者查看其中一个帖子时,其他8个帖子应该出现在侧边栏中。获取相同月份和年份的侧边栏显示的所有帖子

我已经写了一个函数来完成这个任务,但是我在下面会介绍一些问题。下面的代码:

function getSidebarPosts($post_id){ 
    $ret = array(); 
    $parent = get_post($post_id, ARRAY_A); 
    $sdate = strtotime($parent['post_date']); 
    $month = date('m',$sdate); 
    $year = date('Y',$sdate); 

    $sargs = array(
     'monthnum'=>$month, 
     'year'=>$year, 
     'numberposts'=>9 
    ); 
    $sposts = get_posts($sargs); 
    foreach($sposts as $p){ 
     setup_postdata($p); 
     $id = get_the_ID(); 
     if($id == $post_id){ continue; } 
     $link = get_permalink($id); 
     $title = get_the_title(); 
     $cats = wp_get_post_categories($id); 
     $cat = get_category($cats[0]); 
     $o = '<li><span>'.$cat->name.'</span> '; 
     $o .= '<a href="'.$link.'">'.$title.'</a></li>'; 
     $ret[] = $o; 
    } 
    return $ret; 
} 

传递给这个函数的参数是要显示的帖子的ID,所以我需要检索所有相同的年份和月份为正在观看的职位时发布的其他职位。 Wordpress不会在任何一个中产生任何错误(对于这个问题PHP也不会),但是我只是得到一个空的结果集,我不确定这是为什么。代码相当简单,但如果我能澄清任何事情,请发表评论并让我知道。

哦,我试过调整'numberposts'参数,这似乎没有任何效果。另外,每个帖子都只有一个类别。

谢谢!

回答

0

我想看看这些结果进一步移动前:

$parent = get_post($post_id, ARRAY_A); 
$sdate = strtotime($parent['post_date']); 

也许你可以为测试做这样的事情:

function getSidebarPosts($post_id){ 
    $ret = array(); 
    $parent = get_post($post_id, ARRAY_A); 
    $sdate = strtotime($parent['post_date']); 
    $month = date('m',$sdate); 
    $year = date('Y',$sdate); 

    $ret[] = '<h3>Parent post:</h3>'; 
    $ret[] = print_r($parent, true); 
    $ret[] = '<h3>Post date:</h3>'; 
    $ret[] = $parent['post_date']; 
    $ret[] = '<h3>Post time:</h3>'; 
    $ret[] = $sdate; 
    $ret[] = '<h3>Post converted date:</h3>'; 
    $ret[] = date('Y-m-d g:i:s a', $sdate); 

    return $ret; 
} 

请报到输出:)

+0

原来,发布日期在2个月前回来了 - 将其更改为'post_modified',它的工作方式就像一个魅力:) – inkedmn 2010-08-22 02:39:05