我所拥有的页面显示了一个类别的帖子, 底部有一个上一个和下一个帖子链接。我的问题是, 当到达最后一个时, 我想循环回到起点。如果你在第一个帖子上, 它会一直到结尾, 如果你在最后一个帖子上, 它不会回到开始, 如果你在最后一个帖子上, 它只会显示最后一个帖子。
到目前为止, 这是我的代码:
<
?php
$prev_post = get_adjacent_post( true, '', true );
$next_post = get_adjacent_post( true, '', false );
$prev_post_id = $prev_post->
ID;
$next_post_id = $next_post->
ID;
?>
<
?php if ($prev_post_id == '') {
$query = new WP_Query( array ( 'orderby' =>
'ASC', 'posts_per_page' =>
'1', 'cat=4' ));
while($query->
have_posts()):
$query->
the_post();
$prev_post_id = $query->
post->
ID;
endwhile;
} ?>
<
?php if ($next_post_id == '') {
$query2 = new WP_Query( array ( 'orderby' =>
'DESC', 'posts_per_page' =>
'1', 'cat=4'));
while($query2->
have_posts()):
$query2->
the_post();
$next_post_id = $query2->
post->
ID;
endwhile;
} ?>
<
a href="http://www.srcmini.com/<
?php echo get_permalink($prev_post_id);
?>" class="prev-footer-item">
<
div class="prev-inner">
<
h3 class="gamma">
<
?php echo get_the_title($prev_post_id );
?>
<
/h3>
<
h4 class="delta">
<
?php the_field('subtitle', $prev_post_id );
?>
<
/h4>
<
div class="footer-overlay">
<
/div>
<
/div>
<
/a>
<
a href="http://www.srcmini.com/<
?php echo get_permalink($next_post_id);
?>" class="next-footer-item">
<
div class="next-inner">
<
h3 class="gamma">
<
?php echo get_the_title($next_post_id);
?>
<
/h3>
<
h4 class="delta">
<
?php the_field('subtitle', $next_post_id);
?>
<
/h4>
<
div class="footer-overlay">
<
/div>
<
/div>
<
/a>
【WordPress中的连续上一个和下一个帖子链接】我敢肯定我很想念这件事, 对吗?
更新:上一个工作职位:
[request] =>
SELECT SQL_CALC_FOUND_ROWSas1_posts.ID FROM as1_postsWHERE 1=1AND as1_posts.post_type = 'post' AND (as1_posts.post_status = 'publish' OR as1_posts.post_status = 'private')ORDER BY as1_posts.post_date DESC LIMIT 0, 1
下一篇文章不起作用:
[request] =>
SELECT SQL_CALC_FOUND_ROWSas1_posts.ID FROM as1_postsWHERE 1=1AND as1_posts.post_type = 'post' AND (as1_posts.post_status = 'publish' OR as1_posts.post_status = 'private')ORDER BY as1_posts.post_date DESC LIMIT 0, 1
#1我看不到任何让我惊讶的东西, 但是我已经在两个循环中添加了一个if语句(以防止错误), 在每个循环之后添加了wp_reset_postdata(), 并消除了对$ query和$ query2的需要-如果你不希望将查询结果用于除此以外的任何内容, 则只能对这两者使用$ query。
再想一想-如果帖子ID不存在, 你确定get_adjacent_post()返回” ” 吗?可以为null, 例如为0。可能值得做var_dump($ next_post_id)并进行检查。
编辑
我忘了提一下, get_adjacent_post()假设相邻帖子的post_type与你当前正在查看的帖子相同。不过, 我不认为这是个问题, 因为你已经说过了, 但是这是未来的事情。
<
?php
if($prev_post_id === '') :$query = new WP_Query(array('orderby' =>
'ASC', 'posts_per_page' =>
'1', 'cat=4'));
if($query->
have_posts()) : while($query->
have_posts()) :
$query->
the_post();
$prev_post_id = get_the_ID();
endwhile;
endif;
wp_reset_postdata();
endif;
if($next_post_id === '') :$query = new WP_Query(array('orderby' =>
'DESC', 'posts_per_page' =>
'1', 'cat=4'));
if($query->
have_posts()) : while($query->
have_posts()) :
$query->
the_post();
$next_post_id = get_the_ID();
endwhile;
endif;
wp_reset_postdata();
endif;
?>
推荐阅读
- 在WordPress中使用wp_get_attachment_image()的正确方法
- 更改WordPress发布列表的布局
- 使用WordPress后端UI元素更改CSS值
- 导入WordPress主题单元测试数据时,无法解决”超出最大执行时间”错误
- add_theme_support在functions.php上不起作用
- 在自定义帖子类型中添加链接
- 将背景图像添加到Jupiter 4 WordPress主题标头
- windows下的pycharm配置 linux环境
- day1-python简介+安装