分页(下):数字分页与“空 li”的坑

作者: admin 分类: wordpress主题制作教程 发布时间: 2026-11-06 18:33

一个空心的列表项

caogenbj 的分页代码里有这么一段:

echo "<li>";
previous_posts_link( '上一页' );
echo "</li>";

看着没毛病。但第一页的时候,previous_posts_link 什么都不输出——它只在“有上一页”时才输出链接。

结果就是:<li></li>,一个空的列表项。

空 li 在页面上可能看不出来(没有文字),但它会占一个位置,样式边框、间距都会受影响。更糟的是,读屏软件会读到一个空项。

为什么会这样

因为 previous_posts_link() 是“直接输出”的函数——它没有返回值,直接 echo。你外面已经打了 <li>,它不输出内容,li 就空了。

正确写法:先判断,再决定要不要 li

WordPress 提供了两个“返回字符串”的版本:

  • get_previous_posts_link():返回上一页链接(字符串),不直接输出;
  • get_next_posts_link():返回下一页链接。

用它们可以先判断“有没有”,再决定要不要包 <li>:

<?php
$prev = get_previous_posts_link( '上一页' );
if ( $prev ) {
    echo '<li>' . $prev . '</li>';
}

$next = get_next_posts_link( '下一页' );
if ( $next ) {
    echo '<li>' . $next . '</li>';
}
?>

这样第一页时,$prev 是空字符串,if 不成立,压根不输出 <li>。最后一页同理。

这就是“get_ 前缀”的意义:有 get_ 的返回字符串,没 get_ 的直接输出。

同一类问题还有很多

WordPress 里这种“成对”的函数不少:

直接输出 返回字符串
the_title() get_the_title()
the_permalink() get_permalink()
the_excerpt() get_the_excerpt()
previous_posts_link() get_previous_posts_link()

规律:要拼进 HTML 结构里、需要判断的,用 get_ 版本;直接输出内容的,用 the_ 版本。

顺带一个结构问题

caogenbj 的分页还有个问题:模板里写了一个 <ul class="pagination">,分页函数内部又输出一个 <ul>,变成“ul 套 ul”。

这个我这次一并改了:把模板层那个多余的 ul 删掉,只留函数内部那个。

小结

一句话记住:要判断“有没有”再用,就用 get_previous_posts_link 返回字符串;直接 previous_posts_link 会留下空 li。

下一篇讲面包屑。

本系列导航

相关文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Powered by 草根站长笔记 © 2015-2026 草根站长笔记 Inc.版权所有,禁止转载