前天和大家分享的“如何实现Wordpress文章分页”反响很好,但现在很多WPer都静态化了自己的的Blog,Wopus中文平台也一样,采用了“%postname%.html”这样的链接形式,分页后就变成了“postname.html/2”的形式,相当不美观,我们需要“postname-2.html”这样的形式,来,动两个小手术:
找到 $rewrite = array_merge($rewrite, array($match => $query))
在这行代码之前添加以下代码:
if (strpos($match, '.html') !== false && strpos($query, '&page=') !== false) {
$match = str_replace('(/[0-9]+)?/?$', '$', $match);
$rewrite = array_merge($rewrite, array(str_replace('([^/]+).html', '([^/]+)-([0-9]+).html', $match) => $query));
}
找到wp_link_pages函数,用以下代码替代之:
< ?php
/*
修改页面链接
*/
function alter_page_link($link, $pagenum){
return str_replace(".html", "-$pagenum.html", $link);
}
/*
包含在 / *=================* / 之间的代码作过修改
*/
function wp_link_pages($args = '') {
$defaults = array(
'before' => '
' . __('Pages:'), 'after' => '
',
'next_or_number' => 'number', 'nextpagelink' => __('Next page'),
'previouspagelink' => __('Previous page'), 'pagelink' => '%',
'more_file' => '', 'echo' => 1
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
global $post, $id, $page, $numpages, $multipage, $more, $pagenow;
if ( $more_file != '' )
$file = $more_file;
else
$file = $pagenow;
$output = '';
/*=================*/
/* 优化一下,太多重复调用了-_-! */
$permalink_structure = get_option('permalink_structure');
$not_public_post = in_array($post->post_status, array('draft', 'pending'));
$permalink = get_permalink();
/* 判断永久链接格式是否支持静态化 */
$using_static_permalink = strpos($permalink, '.html') !== false ? true : false;
/*=================*/
if ( $multipage ) {
if ( 'number' == $next_or_number ) {
$output .= $before;
for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
$j = str_replace('%',"$i",$pagelink);
$output .= ' ';
if ( ($i != $page) || ((!$more) && ($page==1)) ) {
if ( 1 == $i ) {
$output .= '';
} else {
/*=================*/
if ( '' == $permalink_structure || $not_public_post ) {
$output .= '';
} else {
if (!$using_static_permalink) {
$output .= '';
} else {
$output .= '';
}
}
/*=================*/
}
}
$output .= $j;
if ( ($i != $page) || ((!$more) && ($page==1)) )
$output .= '';
}
$output .= $after;
} else {
if ( $more ) {
$output .= $before;
$i = $page - 1;
if ( $i && $more ) {
if ( 1 == $i ) {
$output .= '' . $previouspagelink . '';
} else {
/*=================*/
if ( '' == $permalink_structure || $not_public_post ) {
$output .= '' . $previouspagelink . '';
} else {
if (!$using_static_permalink) {
$output .= '' . $previouspagelink . '';
} else {
$output .= '' . $previouspagelink . '';
}
}
/*=================*/
}
}
$i = $page + 1;
if ( $i < = $numpages && $more ) {
if ( 1 == $i ) {
$output .= '' . $nextpagelink . '';
} else {
/*=================*/
if ( '' == $permalink_structure || $not_public_post ) {
$output .= '' . $nextpagelink . '';
} else {
if (!$using_static_permalink) {
$output .= '' . $nextpagelink . '';
} else {
$output .= '' . $nextpagelink . '';
}
}
/*=================*/
}
}
$output .= $after;
}
}
}
if ( $echo )
echo $output;
return $output;
}
?>
以上步骤在Wordpress2.6下测试通过,代码来自Voidman
注意:
1、当你修改完成后,可能需要到后台设置里重新修改一次“永久链接形式”,无需改动设置,只需点一下“更新”。否则会出现404错误。
2、若没有静态化、伪静态化过Wordpress,也就是没有采用"%postname%.html"这样的链接形式,请不要这样修改,否则会出现“404”错误。
0人
|
了这篇文章 |