北极寒流 » 网络资源 » WordPress分页日志静态化的最优解决方案 - 2010.11.11

WordPress分页日志静态化的最优解决方案

大家都知道动态的网页结构对于搜索引擎的抓取不太友好,虽然说目前在搜索引擎不段改进的情况下对于动态网页结构抓取有所好转,但是相对来讲,还是网页静态化更适合SEO优化。对于WordPress博客,也有很多插件可以实现网页静态化。如常见的WordPress静态化插件-WP Super Cache以及cos-html-cache,就可以很容易使页面静态化。不过采用cos-html-cache静态化插件的话,对于分页形式的静态化就支持的不太好。

WordPress 对已分页文章的永久链接的处理方式则会给页面静态化后的访问带来问题。 例如,永久链接结构为 /%year%/%monthnum%/%postname%.html,WordPress 生成的文章相关分页链接如下所示:

yourdomain.com/2008/03/postname.html yourdomain.com/2008/03/postname.html/2 yourdomain.com/2008/03/postname.html/3

可以看到 WordPress 只是简单地将页码加在了链接尾部,所以当我们静态化其中一页的内容后,我们将只能访问被静态化的那一页内容而无法访问其它分页的内容。为了可以静态化所有分页内容,需要对 WordPress 处理永久链接的方式做些小小的改动,并改变分页链接的形式:

yourdomain.com/2008/03/postname.html
yourdomain.com/2008/03/postname-2.html yourdomain.com/2008/03/postname-3.html

这里我们以/%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];
}

2. 打开主题目录下的single.php文件,查找wp_link_pages并替换为my_wp_link_pages

3. 后台“设置-永久链接”点击一下“保存修改”按钮,大功告成。(此步骤务必要做,不如会出错)

PAGES: 1 2

评论关闭