2010-08-19 9 views
0

Le blog Wordpress que je construis est publié comme un magazine; le premier jour de chaque mois, plusieurs postes (neuf, pour être exact) sont publiés en succession rapide. Lorsqu'un lecteur visualise l'un de ces neuf messages, les huit autres messages doivent apparaître dans la barre latérale.Obtenez tous les articles du même mois et de l'année pour l'affichage de la barre latérale

J'ai une fonction que j'ai écrite pour accomplir ceci, mais j'ai quelques problèmes que je vais décrire ci-dessous. Voici le code:

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; 
} 

Le paramètre passé à cette fonction est l'ID du poste affiché, alors je dois récupérer tous les autres postes publiés pendant que le poste étant considéré le même mois et l'année. Wordpress ne génère aucune erreur dans tout cela (pas plus que PHP), mais j'obtiens simplement un jeu de résultats vide et je ne sais pas pourquoi. Le code est assez simple, mais si je peux clarifier quelque chose, faites des commentaires et faites le moi savoir. Oh, et j'ai essayé de régler le paramètre 'numberposts' et cela ne semble pas avoir d'effet. De plus, chaque article a exactement une catégorie.

Merci!

Répondre

0

Je prendrais un coup d'œil sur les résultats de ces derniers avant d'aller plus loin:

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

Peut-être que vous pouvez faire quelque chose comme ça pour le test:

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; 
} 

S'il vous plaît rapport la sortie :)

+0

Il s'avère que la date de publication revenait il y a 2 mois - l'a changée en 'post_modified' et cela a fonctionné comme un charme :) – inkedmn

Questions connexes