WordPress 分页文章静态化的更优解决方案
之前用比较暴力的方式实现了分页文章的静态化,不过这样一来升级 WordPress 就不太方便了。厌烦了每次升级都要修改源文件,于是利用 WordPress 本身提供的接口实现了更好的解决方案。
以/%year%/%monthnum%/%postname%.html
这样的永久链接结构为例:
1. 打开主题目录下的functions.php
文件,添加以下代码:
// 添加分页处理规则
function add_custom_post_rewrite_rules($rules) {
$custom_rules = array(
'([0-9]{4})/([0-9]{1,2})/([^/]+)-([0-9]+)\.html$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&name=$matches[3]&page=$matches[4]',
);
$rules = array_merge($custom_rules, $rules);
return $rules;
}
add_filter('post_rewrite_rules', 'add_custom_post_rewrite_rules');
// 修改分页链接
function my_wp_link_pages($args = '') {
$args .= ($args ? '&' : '') . 'echo=0';
$links = wp_link_pages($args);
$links = preg_replace_callback('|([0-9]{4}/[0-9]{1,2}/)([^/]+)(\.html)(/)([0-9]+)|', 'custom_page_link', $links);
echo $links;
}
function custom_page_link($matches) {
return $matches[1].$matches[2].'-'.$matches[5].$matches[3];
}