2010-08-19 80 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