在很多WordPress主题中,分页导航都是采用传统的“上一页”“下一页”两个链接,但这种方法并不实用,我们希望把他变成“1 2 3 …”具体的页码。有一个实现方法是使用WP-Pagenavi插件,但这么一个小小的功能,我们希望把它整合进主题中,以减少对插件的依赖。
具体的实现方法是:
1.首先在主题functions.php中加入以下代码:
- /* Pagenavi */
- function pagenavi( $before = ”, $after = ”, $p = 2 ) {
- if ( is_singular() ) return;
- global $wp_query, $paged;
- $max_page = $wp_query->max_num_pages;
- if ( $max_page == 1 ) return;
- if ( empty( $paged ) ) $paged = 1;
- echo $before.'“pagenavi”>’.“\n”;’.$after.“\n”;
- echo ‘class=“pages”>Page: ‘ . $paged . ‘ of ‘ . $max_page . ‘ ’;
- if ( $paged > 1 ) p_link( $paged – 1, ‘Previous Page’, ‘?’ );
- if ( $paged > $p + 1 ) p_link( 1, ‘First Page’ );
- if ( $paged > $p + 2 ) echo ‘… ‘;
- for( $i = $paged – $p; $i <= $paged + $p; $i++ ) {
- if ( $i > 0 && $i <= $max_page ) $i == $paged ? print “{$i}” : p_link( $i );
- }
- if ( $paged < $max_page – $p – 1 ) echo ‘… ‘;
- if ( $paged < $max_page – $p ) p_link( $max_page, ‘Last Page’ );
- if ( $paged < $max_page ) p_link( $paged + 1,’Next Page’, ‘?’ );
- echo ‘
- }
- function p_link( $i, $title = ”, $linktype = ” ) {
- if ( $title == ” ) $title = “Page {$i}”;
- if ( $linktype == ” ) { $linktext = $i; } else { $linktext = $linktype; }
- echo “, esc_html( get_pagenum_link( $i ) ), “‘ title='{$title}’>{$linktext}”;
- }
2.然后在页面相应位置,把原来的分页导航代码改成以下:
这样就已经实现了分页导航,但此时的分页导航还很难看,页码都挤在一起,所以我们需要在style.css中进行适当装饰:
- /* pagenavi */
- #pagenavi a, #pagenavi a:visited, #pagenavi span {
- height: 25px;
- line-height: 25px;
- display: inline–block;
- padding: 1px 8px;
- }
- #pagenavi a, #pagenavi a:visited {
- margin: 0 2px;
- }
- #pagenavi span.pages {
- color: #777;
- font-weight: bold;
- margin-right: 10px;
- padding: 0;
- }
- #pagenavi span.current {
- margin: –2px 2px –1px;
- padding: 0 9px;
- height: 28px;
- line-height: 28px;
- text-align: center;
- }
当然,这里只是简单的装饰,你可以根据主题风格做必要的修改。
转载请保留链接:https://ilovetile.sijie.wang/2410/ 感谢您对版权的尊重
具体是什么效果,没有demo吗
@大猫 具体看本网站首页底部的导航
我也有这个代码
分页导航还真么做过,可以尝试一下!
你好,我按照你的代码做了,可是为什么无法导航
@俞yly 你说详细一点吧,发我邮箱[email protected]
收下了,谢谢~
不会改代码,那个插件似乎对新版也不能适应了,所以,一切都是原生态
博主你好, 网上找了几种导航都是同一个BUG. 比如设置显示个为5
1 2 3 4 5 6 7 .. 100 这样没错
如果是在中间比如8
1…3 4 5 6 7 8 9 10 11 12 13 14 15 … 100
这样显示很多出来了 我想分页一直显示 8个 在中间的时候 是不是应该判断下?