天津十一选五遗漏:修正WordPress 设置伪静态后文章分页链接

2017年10月28日15:06:32 132 7,569

11选五开奖结果走势图 www.pnej.net 我们通常将WordPress固定链接设为/%postname%.html或者/%post_id%.html,可以让页面看起来像静态页,但当文章有分页时,分页链接会变得奇怪,比如:

/morning-paper-news.html/3

/132.html/2

html既然是后缀就应该一直在最后,来自solagirl的《用.html作为url后缀时的分页链接问题》一文,为我们提供了解决办法。

不过原代码只提供了/%postname%.html的修改方法。

本文提供一下/%post_id%.html的修改方法。

修正WordPress 设置伪静态后文章分页链接

将下面代码添加到当前主题 functions.php中:

  1. //?适合/%post_id%.html分页链接修正
  2. class?Rewrite_Inner_Page_Links_id{
  3. ????var?$separator;
  4. ????function?__construct(){
  5. ????????$this->separator?=?'/page-';
  6. ????????if(?!is_admin()?||?defined(?'DOING_AJAX'?)?)?:
  7. ????????????add_filter(?'wp_link_pages_link',?array(?$this,?'inner_page_link_format'?),?10,?2?);
  8. ????????????add_filter(?'get_www.pnej.netments_pagenum_link',?array(?$this,?'www.pnej.netment_page_link_format'?)?);
  9. ????????????add_filter(?'redirect_canonical',?array(?$this,?'cancel_redirect_for_paged_posts'?),?10,?2?);
  10. ????????endif;
  11. ????????if(?is_admin()?)?:
  12. ????????????add_filter(?'rewrite_rules_array',?array(?$this,?'pagelink_rewrite_rules'?)?);
  13. ????????????register_activation_hook(?__FILE__,?array(?$this,?'flush_rewrite_rules'?)?)?;
  14. ????????????register_deactivation_hook(?__FILE__,?array(?$this,?'flush_rewrite_rules'?)?);
  15. ????????endif;
  16. ????}
  17. ????function?flush_rewrite_rules(){
  18. ????????flush_rewrite_rules();
  19. ????}
  20. ????//?修改post分页链接的格式
  21. ????function?inner_page_link_format(?$link,?$number?){
  22. ????????if(?$number?>?1?){
  23. ????????????if(?preg_match(?'%<a?href=".*\.html/\d*"%',?$link?)?){
  24. ????????????????$link?=?preg_replace(?"%(\.html)/(\d*)%",?$this->separator."$2$1",?$link?);
  25. ????????????}
  26. ????????}
  27. ????????return?$link;
  28. ????}
  29. ?????//?为新的链接格式增加重定向规则,移除原始分页链接的重定向规则,防止重复收录
  30. ????function?pagelink_rewrite_rules(?$rules?){
  31. ????????foreach?($rules?as?$rule?=>?$rewrite)?{
  32. ????????????if?(?$rule?==?'([0-9]+).html(/[0-9]+)?/?$'?)?{
  33. ????????????????unset($rules[$rule]);
  34. ????????????}
  35. ????????}
  36. ????????$new_rule['([0-9]+)('.$this->separator.'([0-9]+))?.html/?$']?=?'index.php?p=$matches[1]&page=$matches[3]';
  37. ????????return?$new_rule?+?$rules;
  38. ????}
  39. ????//?禁止WordPress将页面分页链接跳转到原来的格式
  40. ????function?cancel_redirect_for_paged_posts(?$redirect_url,?$requested_url?){
  41. ????????global?$wp_query;
  42. ????????if(?is_single()?&&?$wp_query->get(?'page'?)?>?1?){
  43. ????????????return?false;
  44. ????????}
  45. ????????return?true;
  46. ????}
  47. }
  48. new?Rewrite_Inner_Page_Links_id();

提示:添加代码后,需要保存一下固定链接设置。

之后再次打开文章分页链接,会变成类似的:

/morning-paper-news/page-2.html

/132/page-2.html

注:上述代码并没有评论分页的链接修正,本人无此刚需未做研究。

其它固定链接形式,需要安装rewrite rules inspector插件查看链接正则写法并修改上述代码。

附:适合/%postname%.html链接形式原代码:展开

  1. /*
  2. *修复.html分页链接
  3. */
  4. class?Rewrite_Inner_Page_Links{
  5. ????var?$separator;
  6. ????function?__construct(){
  7. ????????$this->separator?=?'/page-';
  8. ????????if(?!is_admin()?||?defined(?'DOING_AJAX'?)?)?:
  9. ????????????add_filter(?'wp_link_pages_link',?array(?$this,?'inner_page_link_format'?),?10,?2?);?//?for?inner?pages
  10. ????????????add_filter(?'get_www.pnej.netments_pagenum_link',?array(?$this,?'www.pnej.netment_page_link_format'?)?);
  11. ????????????add_filter(?'redirect_canonical',?array(?$this,?'cancel_redirect_for_paged_posts'?),?10,?2?);
  12. ????????endif;
  13. ????????if(?is_admin()?)?:
  14. ????????????add_filter(?'rewrite_rules_array',?array(?$this,?'pagelink_rewrite_rules'?)?);
  15. ????????????register_activation_hook(?__FILE__,?array(?$this,?'flush_rewrite_rules'?)?)?;
  16. ????????????register_deactivation_hook(?__FILE__,?array(?$this,?'flush_rewrite_rules'?)?);
  17. ????????endif;
  18. ????}
  19. ????function?flush_rewrite_rules(){
  20. ????????flush_rewrite_rules();
  21. ????}
  22. ????/**
  23. ?????*?修改post分页链接的格式
  24. ?????*[email protected]?string?$link
  25. ?????*[email protected]?int?$number
  26. ?????*[email protected]?string
  27. ?????*/
  28. ????function?inner_page_link_format(?$link,?$number?){
  29. ????????if(?$number?>?1?){
  30. ????????????if(?preg_match(?'%<a?href=".*\.html/\d*"%',?$link?)?){
  31. ????????????????$link?=?preg_replace(?"%(\.html)/(\d*)%",?$this->separator."$2$1",?$link?);
  32. ????????????}
  33. ????????}
  34. ????????return?$link;
  35. ????}
  36. ????/**
  37. ?????*?修改评论分页链接
  38. ?????*[email protected]?string?$result
  39. ?????*[email protected]?string
  40. ?????*/
  41. ????function?www.pnej.netment_page_link_format(?$result?){
  42. ????????//?From?hello-world.html/www.pnej.netment-page-1#www.pnej.netments?to?hello-world/www.pnej.netment-page-1.html#www.pnej.netments
  43. ????????if(?strpos(?$result,?'.html/'?)?!==?false?){
  44. ????????????$result?=?preg_replace(?'=([^/]+)(.html)/www.pnej.netment-page-([0-9]{1,})=',?"$1/www.pnej.netment-page-$3$2"?,$result?);
  45. ????????}
  46. ????????return?$result;
  47. ????}
  48. ????/**
  49. ?????*?为新的链接格式增加重定向规则,移除原始分页链接的重定向规则,防止重复收录
  50. ?????*
  51. ?????*?访问原始链接将返回404
  52. ?????*[email protected]?array?$rules
  53. ?????*[email protected]?array
  54. ?????*/
  55. ????function?pagelink_rewrite_rules(?$rules?){
  56. ????????foreach?($rules?as?$rule?=>?$rewrite)?{
  57. ????????????if?(?$rule?==?'([^/]+).html(/[0-9]+)?/?$'?||?$rule?==?'([^/]+).html/www.pnej.netment-page-([0-9]{1,})/?$'?)?{
  58. ????????????????unset($rules[$rule]);
  59. ????????????}
  60. ????????}
  61. ????????$new_rule['([^/]+)('.$this->separator.'([0-9]+))?.html/?$']?=?'index.php?name=$matches[1]&page=$matches[3]';
  62. ????????$new_rule['([^/]+)/www.pnej.netment-page-([0-9]{1,}).html(\#[^\s])?$']?=?'index.php?name=$matches[1]&cpage=$matches[2]';
  63. ????????return?$new_rule?+?$rules;
  64. ????}
  65. ????/**
  66. ?????*?禁止WordPress将页面分页链接跳转到原来的格式
  67. ?????*[email protected]?string?$redirect_url
  68. ?????*[email protected]?string?$requested_url
  69. ?????*[email protected]?bool
  70. ?????*/
  71. ????function?cancel_redirect_for_paged_posts(?$redirect_url,?$requested_url?){
  72. ????????global?$wp_query;
  73. ????????if(?is_single()?&&?$wp_query->get(?'page'?)?>?1?){
  74. ????????????return?false;
  75. ????????}
  76. ????????return?true;
  77. ????}
  78. }
  79. new?Rewrite_Inner_Page_Links();

上述代码会与No category parents插件冲突,解决办法:

此处为隐藏的内容!
发表评论并刷新,方可查看

 

weinxin
我的微信
分享交流WordPress经验与技巧,关注前端设计与网站制作。仅用于功能演示。
Begin主题购买
Begin主题购买

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:132   其中:访客  129   博主  3

    • 来巡山 来巡山 2

      来学习下

      • michael michael 0

        学习下

        • 誓言 誓言 1

          学习下

          • 誓言 誓言 1

            已经评论过了

            • harvey harvey 1

              来看看

              • 三道杠 三道杠 0

                来学习

                • 阿星 阿星 0

                  来学习一下

                  • 螃蟹de盖子 螃蟹de盖子 0

                    学习下

                    • 暮辞 暮辞 0

                      // 为新的链接格式增加重定向规则,移除原始分页链接的重定向规则,防止重复收录
                      这个功能无效 还是301了原来的 /132.html/2 这种链接

                      • 台庄资讯 台庄资讯 4

                        分页后404咋办。。。 :!:

                        • learn learn 0

                          过来学习一下下 :mrgreen:

                          • 是大V 是大V 0

                            学习一下

                            • 夏天烤洋芋 夏天烤洋芋 2

                              感谢分享,解决了我好多年前就纠结的问题

                              • 好运来 好运来 0

                                学习一下

                                • 老蛤蟆 老蛤蟆 0

                                  看看是不是我想要的结果,感谢~~~

                                  • CPS广告 CPS广告 0

                                    感谢分享?。?!

                                    • admin admin 1

                                      看看隐藏内容啊

                                      • 七号文库 七号文库 1

                                        正需要看一下

                                        • 反而我发 反而我发 0

                                          法务v人防 他封

                                          • 放的歌 放的歌 0

                                            回复学习下

                                            • . . 0

                                              谢谢分享