我在主页内容之前的代码中显示了一个侧边栏。我写了这个(janky)函数来引入最近的帖子和评论。然而,它工作得非常好,它与我的所有页面紧密相关,并在所有页面上添加帖子。如何重置/回放查询或创建新查询以使我的所有页面显示正确的内容?
<?php rewind_posts(); ?>
和<?php wp_reset_query(); ?>
不是我的伎俩
这是我的问题:
$comments = get_comments('number=10');
$posts = get_posts('posts_per_page=10&category=6');
$most_recent = array();
foreach ($comments as $comment)
$most_recent[strtotime($comment->comment_date_gmt)] = $comment;
foreach ($posts as $post)
$most_recent[strtotime($post->post_date_gmt)] = $post;
unset($comments, $posts);
krsort($most_recent);
$most_recent = array_slice($most_recent, 0, 10);
foreach ($most_recent as $post_or_comment) {
$is_post = isset($post_or_comment->post_date_gmt);
$comment_id = $post_or_comment->comment_ID;
$post_id = $post_or_comment->ID;
$comment_post_id = $post_or_comment->comment_post_ID;
if ($is_post == 1)
{ ?> <li><a href="<?php echo get_permalink($post_id); ?>"><?php echo $post_or_comment->post_title; ?></a><span class="tag"><?php echo the_category($post_id); ?></span></li><?php }
else
{ ?><li> <a href="<?php echo get_permalink($comment_post_id); ?>"><?php echo get_the_title($comment_post_id); ?></a><span class="tag">Comment</span></li><?php }
// output comments and posts
}
输出评论和帖子 }
答案 0 :(得分:0)
请尝试使用$my_posts
和$my_comments
,以防WP使用相同命名的全局变量(尽管我认为不是这样)。
此外,在foreach
循环中,您应该只在知道对象类型时才转换变量,否则您将访问不存在的属性;
foreach ($most_recent as $post_or_comment) {
$is_post = isset($post_or_comment->post_date_gmt);
if ($is_post) {
$post_id = $post_or_comment->ID;
} else {
$comment_id = $post_or_comment->comment_ID;
$comment_post_id = $post_or_comment->comment_post_ID;
}
}
rewind_posts()
此处不起作用。只需在wp_reset_query()
循环结束后立即致电foreach
。