利用 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]; } |
2. 打开主题目录下的single.php文件,查找wp_link_pages并替换为my_wp_link_pages。
3. 后台“设置-永久链接点击一下“保存修改按钮,大功告成。
至于 life97 同学说的 .html/xxx 形式的链接访问失效,这个可能和服务器设置有关,具体原因我也不是很清楚,不过可以通过在 .htaccess 文件中添加规则来解决此问题,如:
<ifmodule mod_rewrite.c> RewriteEngine On RewriteBase;/ RewriteRule ^([0-9]{4})/([0-9]{1,2})/([^/]+)\.html/trackback/?$ index.php?year=$1&monthnum=$2&name=$3&tb=1;[L] 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] 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] </ifmodule> |