当我在下面的代码中写下最近的帖子,然后在为下一个和上一个链接编写代码之后,那个函数会给我相同的帖子链接。如果我发表评论“ $ tags = wp_get_post_tags($ post-> ID); ”这一行,那么它将打印下一个帖子链接。我该如何解决这个错误?请帮帮我。
<?php
//for use in the loop, list 5 post titles related to first tag on current post
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo '<div class="articlecontent font16 bold fontgray">Related Posts</div>';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
echo '<div class="articlecontent"><ul>';
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
echo "</ul></div>";
}
}
?>
<div class="nextprevbar">
<div class="prevtopic"><?php
previous_post_link( '%link', '<img border="0" alt="" src="'.get_template_directory_uri().'/images/prev-bullet.gif">' . _x( ' ', 'Previous post link', 'twentyten' ) . ' %title' ); ?></div>
<div class="nexttopic"><?php next_post_link( '%link', '%title <img border="0" alt="" src="'.get_template_directory_uri().'/images/next-bullet.gif">' . _x( ' ', 'Next post link', 'twentyten' ) . '</span>' ); ?></div>
</div>
答案 0 :(得分:2)
问题必须出在$post
变量中。在执行此行之前:
while ($my_query->have_posts()) : $my_query->the_post(); ?>
$post
var保存当前的帖子数据(我猜这段代码在single.php里面?)。但是在这一行之后,在循环内部,$post
var一个接一个地保存您的各种近期帖子(当您调用$post
时设置the_post()
变量)。
在该循环之后(endwhile
下方),$post
将保存在该循环中检索的最后一篇文章的数据。
previous_post_link()
和next_post_link()
需要访问$post
以获取当前帖子的参考信息,但他们会将您最近发布的帖子的最后一篇文章作为参考,而不是通过你的用户。
我不知道这个页面的html结构是什么,但我会把最近的帖子列表放在导航链接之后(下一篇,以前的帖子)。如果我是对的,这将解决问题,在我看来,它在语义上会更清晰。
或者你也可以试试这个:
添加以下行:
$currentPost = clone $post;
在:
$my_query = new WP_Query($args);
并添加以下行:
<?php $post = $currentPost; ?>
在您拨打下一个和上一个帖子链接功能之前。