非插件实现WordPress首页文章列表分页导航代码替代较早文章”和”最新文章”

非插件实现WordPress首页文章列表分页导航代码,WordPress开通一个多月了,最近一直在折腾WordPress主题,话说WP自带的就”较早文章”和”最新文章”两个内置函数,要想实现Web2.0风格CSS分页是不能的了。

在主题文件夹的functions.php添加一下代码:

function wp_pagenavi($args = array()) {
$defaults = array(‘before’ => ‘<div class=”pagenavi”>’, ‘after’ => ‘</div>’, ‘link_before’ => ‘<a%>’, ‘link_after’ => ‘</a>’, ‘first_text’ => __(‘« First’), ‘last_text’ => __(‘Last »’), ‘prev_text’ => __(‘«’), ‘next_text’ => __(‘»’), ‘range’ => 5, ‘echo’ => true);
$args = wp_parse_args($args, $defaults);
extract($args, EXTR_SKIP);
global $paged,$wp_query;
$out = ”;
if (!$max_page) {
$max_page = $wp_query -> max_num_pages;
}
if ($max_page > 1) {
if (!$paged) {
$paged = 1;
}
if ($paged != 1) {
$out .= str_replace(‘%’, ‘ href=”‘.get_pagenum_link(1).’” title=”‘._($first_text).’”‘, $link_before);
$out .= _($first_text).$link_after;
}else{
$out .= ‘<span class=”disable”>’._($first_text).’</span>’;
$out .= ‘<span class=”disable”>’._($prev_text).’</span>’;
}
$out .= get_previous_posts_link(_($prev_text));
if ($max_page > $range) {
if ($paged < $range) {
for ($i = 1; $i <= ($range + 1); $i++) {
$out .= str_replace(‘%’, ‘ href=”‘.get_pagenum_link($i).’” ‘. ($i == $paged ? ‘ class=”current”‘: ”).”, $link_before);
$out .= “$i”.$link_after;
}
}
elseif($paged >= ($max_page – ceil(($range / 2)))) {
for ($i = $max_page – $range; $i <= $max_page; $i++) {
$out .= str_replace(‘%’, ‘ href=”‘.get_pagenum_link($i).’” ‘. ($i == $paged ? ‘ class=”current”‘: ”).”, $link_before);
$out .= “$i”.$link_after;
}
}
elseif($paged >= $range && $paged < ($max_page – ceil(($range / 2)))) {
for ($i = ($paged – ceil($range / 2)); $i <= ($paged + ceil(($range / 2))); $i++) {
$out .= str_replace(‘%’, ‘ href=”‘.get_pagenum_link($i).’” ‘. ($i == $paged ? ‘ class=”current”‘: ”).”, $link_before);
$out .= “$i”.$link_after;
}
}
} else {
for ($i = 1; $i <= $max_page; $i++) {
$out .= str_replace(‘%’, ‘ href=”‘.get_pagenum_link($i).’” ‘. ($i == $paged ? ‘ class=”current”‘: ”).”, $link_before);
$out .= “$i”.$link_after;
}
}
$out .= get_next_posts_link(_($next_text));
if ($paged != $max_page) {
$out .= str_replace(‘%’, ‘ href=”‘.get_pagenum_link($max_page).’” title=”‘._($last_text).’”‘, $link_before);
$out .= _($last_text).$link_after;
}else{
$out .= ‘<span class=”disable”>’._($next_text).’</span>’;
$out .= ‘<span class=”disable”>’._($last_text).’</span>’;
}
}

$out = $before.”\n$out\n”.$after;
if ($echo) echo $out;
return $out;

}

添加调用代码至主题archive.php、search.php、index.php、category.php

  1. <?php rbt_pagenavi(); ?>

你也可以自定义最外面包裹的div

  1. <?php rbt_pagenavi(array(‘before’ => ‘<p>’, ‘after’ => ‘</p>’)); ?>

或者你也可以自定义链接文字

  1. <?php rbt_pagenavi(array(‘first_text’ => __(‘« 首页’), ‘last_text’ => __(‘最后一页 »’), ‘prev_text’ => __(‘下一页 «’), ‘next_text’ => __(‘» 上一页’))); ?>

也许你想多显示几个链接,’range’ 就是要显示分页链接的个数。

添加美化代码至主题style.css

  1. .pagenavi{ font-size:12px; text-align:right; margin:20px 0;}
  2. .pagenavi a, .pagenavi span{ text-decoration:none; padding:2px 5px; margin:2px; color:#838383;border: 1px solid #DEDFDE; }
  3. .pagenavi a:hover{ border-color:#000; color:#fff; background:#0061de;}
  4. .pagenavi a.current,.pagenavi a.current:hover{ font-weight:bold; color:#ff0084; border:none; background:none; }
  5. .pagenavi span.disable{color:#adaaad; border:none;}

下面一起来预览分页导航效果吧!
wp_pagenavi 本文链接地址: 非插件实现WordPress首页文章列表分页导航代码替代较早文章”和”最新文章”