我们通常将 WordPress 固定链接设为 /%postname%.html 或者/%post_id%.html,这样可以让页面看起来像静态页,但当文章有分页时,分页链接会变得奇怪,比如:
- /morning-paper-news.html/3
- /132.html/2
html 既然是后缀就应该一直在最后,来自solagirl的《用.html作为url后缀时的分页链接问题》一文,为我们提供了解决办法。不过原代码只提供了 /%postname%.html 的修改方法,本文就补充完善一下,提供一下 /%post_id%.html 的修改方法。具体做法也很简单,只需要将以下代码添加到当前主题 functions.php 中:
- // 适合/%post_id%.html分页链接修正
- class Rewrite_Inner_Page_Links_id{
- var $separator;
- function __construct(){
- $this->separator = '/page-';
- if( !is_admin() || defined( 'DOING_AJAX' ) ) :
- add_filter( 'wp_link_pages_link', array( $this, 'inner_page_link_format' ), 10, 2 );
- add_filter( 'get_comments_pagenum_link', array( $this, 'comment_page_link_format' ) );
- add_filter( 'redirect_canonical', array( $this, 'cancel_redirect_for_paged_posts' ), 10, 2 );
- endif;
- if( is_admin() ) :
- add_filter( 'rewrite_rules_array', array( $this, 'pagelink_rewrite_rules' ) );
- register_activation_hook( __FILE__, array( $this, 'flush_rewrite_rules' ) ) ;
- register_deactivation_hook( __FILE__, array( $this, 'flush_rewrite_rules' ) );
- endif;
- }
- function flush_rewrite_rules(){
- flush_rewrite_rules();
- }
- // 修改post分页链接的格式
- function inner_page_link_format( $link, $number ){
- if( $number > 1 ){
- if( preg_match( '%<a href=".*\.html/\d*"%', $link ) ){
- $link = preg_replace( "%(\.html)/(\d*)%", $this->separator."$2$1", $link );
- }
- }
- return $link;
- }
- // 为新的链接格式增加重定向规则,移除原始分页链接的重定向规则,防止重复收录
- function pagelink_rewrite_rules( $rules ){
- foreach ($rules as $rule => $rewrite) {
- if ( $rule == '([0-9]+).html(/[0-9]+)?/?$' ) {
- unset($rules[$rule]);
- }
- }
- $new_rule['([0-9]+)('.$this->separator.'([0-9]+))?.html/?$'] = 'index.php?p=$matches[1]&page=$matches[3]';
- return $new_rule + $rules;
- }
- // 禁止WordPress将页面分页链接跳转到原来的格式
- function cancel_redirect_for_paged_posts( $redirect_url, $requested_url ){
- global $wp_query;
- if( is_single() && $wp_query->get( 'page' ) > 1 ){
- return false;
- }
- return true;
- }
- }
- new Rewrite_Inner_Page_Links_id();
添加代码后,需要到后台 >> 设置 >> 固定链接中保存一下设置,之后再次打开文章分页链接,就会变成类似的:
- /morning-paper-news/page-2.html
- /132/page-2.html
注:上述代码并没有评论分页的链接修正,本人无此刚需未做研究。其它固定链接形式,需要安装 rewrite rules inspector 插件查看链接正则写法并修改上述代码。
上述代码会与《如何实现WordPress分类目录和页面链接地址以斜杠/结尾》代码冲突,解决办法有待研究。
历史上的今天:
- 2018: 简单谈谈最近站长们问得比较多的3个问题
- 2016: 如何正确的避免WordPress管理员登录用户名被暴露
- 2016: 百度统计如何设置页面点击图?如何设置统计范围?
- 2015: 全面放开二胎 备战二胎全方位解读
- 2015: WordPress小清新博客/CMS主题coofocus 2.0.2
- 2015: WordPress新手入门教程之上传安装篇
- 2015: 服务器的好坏对网站究竟有哪些影响
文章标签:WordPress优化 , WordPress教程 , 实用教程
原文地址:http://zmingcx.com/pseudo-static-article-page-links.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为转载文章,来源于 知更鸟 ,版权归原作者所有,欢迎分享本文,转载请保留出处!
原文地址:http://zmingcx.com/pseudo-static-article-page-links.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为转载文章,来源于 知更鸟 ,版权归原作者所有,欢迎分享本文,转载请保留出处!
发表于2017-11-04 10:59 11楼
现在分享文章打开后怎么都是google的那个分析链接停留一下啊?
发表于2017-11-03 17:07 10楼
我当时的处理办法是做一个301重定向,还是博主这个方法好。
发表于2017-11-03 13:56 9楼
谢谢分享
发表于2017-11-03 10:28 8楼
文章分页……,还不如直接多写一篇文章呢。。。
发表于2017-11-03 10:25 7楼
这个真心要赞一个!不过,一般我很好在文章内分页!一是不方便,二是就怕这个分页伪静态!
发表于2017-11-03 08:50 6楼
感谢分享,我的链接结构是 /article/%post_id%.html 按照要求,设置了,没任何作用。不知道啥时候能把/article/%post_id%.html的修改方法也分享一下啊,先谢谢了。
发表于2017-11-03 08:11 5楼
很实用的技术,谢谢博主分享
发表于2017-11-02 23:26 4楼
很实用的技术,谢谢博主分享
发表于2017-11-02 20:38 地板
分页文章比较少,有这个问题,这个方法不错。
发表于2017-11-02 19:40 板凳
写的很好
发表于2017-11-02 16:54 沙发
文章不错