我正在建设的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 :(得分: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;
}
请报告输出:)