我的 WordPress 网站中有个“阅读记录”页面,按年份记录了自己一年中阅读过的图书目录。五年下来,文章的内容比较多,页面拉得很长,浏览起来不太方便。所以我想让页面内容按年份分页显示,一年一个分页,通过导航条切换,方便地浏览。
WordPress 编辑器中有“分页符”按钮,在需要分页的地方点击此按钮,就会加入 <!--nextpage--> 代码,实现自动分页功能。但我的 Autumn pro 主题不支持分页功能,页面模板文件 page.php 中没有引用 wp_link_pages() 函数。最后借鉴 ChatGPT 帮我优化“历史上的今天” WordPress 插件代码 的思路,由 ChatGPT 帮我实现了这个功能。
我在默认分页显示的基础上,提出进一步的需求是:
1、将分页导航的数字(如 "1", "2", "3")替换为特定的年份(如 "2025", "2024", "2023");
2、自动将第一个分页的年份设定为当前年份,分页年份自动递减;
3、分页导航格式正确,生成格式:/book/, /book/2/,/book/3/,避免 /book2 或 /book/page/2/ 这样的错误链接;
4、仅在有分页时显示导航(无分页时不显示);
5、美化下按钮样式。
最后 ChatGPT 修改后的代码如下:
<!-- 显示分页内容 -->
<?php
global $page, $numpages;$current_year = date("Y"); // 获取当前年份
$years = array();// **自动生成年份数组,长度与分页数相等**
for ($i = 0; $i < $numpages; $i++) {
$years[] = $current_year - $i;
}if ($numpages > 1) { // **仅在有分页时显示导航**
echo '<div class="post-pagination">按年查看:';for ($i = 1; $i <= $numpages; $i++) {
$year = isset($years[$i - 1]) ? $years[$i - 1] : $i; // **用年份替换页码**
$link = ($i == 1) ? get_permalink() : trailingslashit(get_permalink()) . $i . '/'; // **生成正确的分页链接**if ($i == $page) {
echo '<span class="current">' . $year . '</span>'; // **当前页高亮**
} else {
echo '<a href="' . esc_url($link) . '">' . $year . '</a>';
}
}echo '</div>';
}
?>
只需将代码粘贴到 WordPress 主题模板文件 page.php(页面模板文件) 中的 <?php the_content(); ?> 以下。
另外添加 CSS 样式(按钮样式代码):
.post-pagination {
text-align: center;
margin: 20px 0;
}.post-pagination a {
display: inline-block;
padding: 8px 15px;
margin: 0 5px;
background-color: #007bff;
color: #ffffff;
text-decoration: none;
border-radius: 5px;
transition: background 0.3s ease;
}.post-pagination a:hover {
background-color: #0056b3;
}.post-pagination .current {
display: inline-block;
padding: 8px 15px;
margin: 0 5px;
background-color: #ff5733;
color: #ffffff;
border-radius: 5px;
font-weight: bold;
}
粘贴在 外观 - 自定义 - 额外 CSS 里,即可美化分页导航。
不得不说,有了 ChatGPT 等 AI 神器后,大大扩展了我们的 DIY 能力,不知道它的原理,你只需会提问和不停尝试修正就可以了。最近国产的 DeepSeek 火得很,你们有上手试用吗?
历史上的今天:
- 2024: 剃头过年 (0)
- 2023: “微信小号”正式上线:一机双号,工作生活两不误 (4)
- 2023: 元宵节 (0)
- 2022: 城里和乡下过年的区别 (0)
- 2022: 2022年北京冬奥会、冬残奥会 会徽及含义 (0)
暂无评论