WordPress 分页文章静态化的更优解决方案

林继 WordPress 5,926 共写了736个字 (2010-08-24 21:46:33) 没有评论 打印 扫描二维码 百度已收录

利用 WordPress 本身提供的接口实现了更好的解决方案。

以/%year%/%monthnum%/%postname%.html这样的永久链接结构为例:

1. 打开主题目录下的functions.php文件,添加以下代码:

  1. // 添加分页处理规则
  2. function add_custom_post_rewrite_rules($rules) {
  3.   $custom_rules = array(
  4.     '([0-9]{4})/([0-9]{1,2})/([^/]+)-([0-9]+)\.html$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&name=$matches[3]&page=$matches[4]',
  5.   );
  6.   $rules = array_merge($custom_rules, $rules);
  7.  
  8.   return $rules;
  9. }
  10. add_filter('post_rewrite_rules', 'add_custom_post_rewrite_rules');
  11.  
  12. // 修改分页链接
  13. function my_wp_link_pages($args = '') {
  14.   $args .= ($args ? '&' : '') . 'echo=0';
  15.   $links = wp_link_pages($args);
  16.   $links = preg_replace_callback('|([0-9]{4}/[0-9]{1,2}/)([^/]+)(\.html)(/)([0-9]+)|', 'custom_page_link', $links);
  17.  
  18.   echo $links;
  19. }
  20.  
  21. function custom_page_link($matches) {
  22.   return $matches[1].$matches[2].'-'.$matches[5].$matches[3];
  23. }

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

3. 后台“设置-永久链接”点击一下“保存修改”按钮,大功告成。

至于 life97 同学说的 .html/xxx 形式的链接访问失效,这个可能和服务器设置有关,具体原因我也不是很清楚,不过可以通过在 .htaccess 文件中添加规则来解决此问题,如:

  1. <ifmodule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteRule ^([0-9]{4})/([0-9]{1,2})/([^/]+)\.html/trackback/?$ index.php?year=$1&monthnum=$2&name=$3&tb=1 [L]
  5. RewriteRule ^([0-9]{4})/([0-9]{1,2})/([^/]+)\.html/feed/(feed|rdf|rss|rss2|atom)/?$ index.php?year=$1&monthnum=$2&name=$3&feed=$4 [L]
  6. RewriteRule ^([0-9]{4})/([0-9]{1,2})/([^/]+)\.html/(feed|rdf|rss|rss2|atom)/?$ index.php?year=$1&monthnum=$2&name=$3&feed=$4 [L]
  7. </ifmodule>

注意添加顺序,不要置于 WordPress 生成的规则之后。

下面是几种其它永久链接结构的具体修改代码:

* /%year%/%monthnum%%day%/%postname%.html
* /html/%year%/%monthnum%/%day%/%postname%.html
* /%category%/%year%/%monthnum%/%day%/%post_id%.html
* /%year%/%monthnum%%day%/%post_id%.html
* /html/%post_id%.html
* /html/%postname%.html
* /post/%postname%.html
* /%postname%.html
* /%category%-%post_id%.html
* /%category%/%post_id%.html
* /%category%/%postname%.html

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >