WordPress 的上/下一篇跳转到同分类的文章

wordpress previous next post WordPress

我这周做站的突然有个需求,主题本身是有上一篇和下一篇的功能,但我实际的需求是希望它展现同一个分类下的上一篇和下一篇文章,而不是按照发布顺序。

问了问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; ?>

参考:《给 WordPress模板 添加 ”上一篇“ 和 ”下一篇“ 功能 - 小羿》

Rate this post
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x