我这周做站的突然有个需求,主题本身是有上一篇和下一篇的功能,但我实际的需求是希望它展现同一个分类下的上一篇和下一篇文章,而不是按照发布顺序。
问了问GPT,让我去主题里找single.php 或者是content.php里去找<?php previous_post_link
,然后改一下代码。
这是GPT给的,有点复杂。
<?php
$prev_post = get_previous_post(true, '', 'category');
$next_post = get_next_post(true, '', 'category');
?>
<?php if (!empty($prev_post)) : ?>
<div class="nav-previous">
<a href="<?php echo get_permalink($prev_post->ID); ?>" rel="prev"><?php echo esc_html($prev_post->post_title); ?></a>
</div>
<?php endif; ?>
<?php if (!empty($next_post)) : ?>
<div class="nav-next">
<a href="<?php echo get_permalink($next_post->ID); ?>" rel="next"><?php echo esc_html($next_post->post_title); ?></a>
</div>
<?php endif; ?>
直接上手搜,结果发现其实超级简单。WordPress 的上一篇和下一篇的函数是这样的:
<?php previous_post_link($format, $link, $in_same_cat = false, $excluded_categories = ""); ?>
<?php next_post_link($format, $in_same_cat = false, $excluded_categories = ""); ?>
$format:格式化被显示的字符串,上一篇函数缺省值是"'« %link",下一篇函数缺省值是"%link »"。
$link:被显示的字符串,缺省值是上一篇或下一篇的"$title",也可以设置为其它你想显示的字符串,就是设置瞄点文字的地方。
$in_same_cat :表示是显示是不是只显示同一分类下的文章,缺省值false表示显示所有分类下的文章,可以写true,表示只显示当前文章分类下的文章。
$excluded_categories:表示在显示上一篇或下一篇时是否排除掉某分类,缺省不排除,如果排除,把要排除的分类的ID列在此处,以英文逗号分隔.
所以我只要找到主题里的函数,然后加上true就行了。
最后的代码为(我用的是Hue主题,红色就是修改的地方),我还差点准备让GPT给我写个功能出来了:
<?php if ( is_single() ):
ob_start();
next_post_link('%link', '<i class="fas fa-chevron-right"></i><span>%title</span>', true);
$next_link = ob_get_clean();
ob_start();
previous_post_link('%link', '<i class="fas fa-chevron-left"></i><span>%title</span>', true);
$prev_link = ob_get_clean();
?>
<?php endif; ?>