Blog

终于不用纠结 WordPress 文章ID了:你也可以

细心的朋友可能会发现,我博客最近的文章链接变成“http://zww.me/文章名.html”,而且老文章的链接方式“http://zww.me/archives/文章ID”还是正常工作。

起因:

由于历史原因,我使用了“http://zww.me/archives/文章ID”的固定链接模式,加上当年不懂事,让文章ID早早串上10000+。

纠结:

一直对不断上升的文章ID耿耿于怀,加上新版的 WordPress 无法禁止“自动草稿”(Auto Draft),还有“上传图片占用ID”、“自定义菜单占用ID”等等,所以你要绝对控制文章ID是不可能的,即使实现你也感觉“瞎折腾”。于是我就想把链接改为“文章名”模式,而不是“文章ID”。

尝试:

其实我去年就尝试过几次,但最终不完美而失败。前几天想放弃 FTP 上传图片方式,就再次尝试把博客文章固定链接改为 http://zww.me/文章名.html,在不断纠结+努力+折腾下,终于解决了。

方法:

因为我博客的特殊性,或者说个人爱好,下面说的内容方法不按照我博客的方式来说明。而是根据把固定链接模式“http://你的域名/archives/%post_id%”改为“http://你的域名/archives/%postname%”来说明。

其实原理很简单:就是把固定链接改为“http://你的域名/archives/%postname%”,然后用 SQL 语句把所有文章的“post_name”改为“ID”

步骤:

注意:操作数据库前一定要先备份!!!

1. 批量把 post 的 post_name 改为 ID 的 SQL 语句:去 phpmyadmin 》选择你的数据库 》SQL
(注:下面这句会把 page 的 post_name 也会改为 ID,要排除可以参考 SQL 手册,我是用原始方法人工改那几个页面。。。)

UPDATE wp_posts SET post_name = REPLACE(post_name, post_name, ID)

2. 把 WP 的固定链接(WP后台 》设置 》固定链接)改为“http://你的域名/archives/%postname%”

用了文章名,再也不用担心我的ID了!

--------------- <—— 这是分割线 简单说说我博客使用的方法,具体不写了,太麻烦,而且需要懂点 WP 相关函数。 1. 因为我博客以前的链接是这样的:http://zww.me/archives/文章ID,于是我定义了一个新的 post style:archives 2. 然后定义 archives 类型的文章链接模式为 http://zww.me/archives/%postname% 3. 用 SQL 批量把文章的 post 类型改为 archives(表 wp_post) 4. 给 archives 定义新的分类和标签:archives_category 和 archives_tag 5. 把原来的分类和标签的 taxonomy 改为 archives_category 和 archives_tag(表 wp_term_taxonomy) 6. 把 WP 的固定链接改为:http://zww.me/%postname%.html 7. 把主题的调用函数通通要更改一遍(如首页、分类页、文章分类、标签、热门标签、相关文章、最新评论、最新文章、热门文章、最近更新的文章等等),确保可以调用到 archives 类型的文章 博客是不是很像重生? 130202-new-rewrite

折腾吧。

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/do-not-need-to-tangle-wordpress-post-id.z-turn

125 comments

  1. Simnovo Simnovo Google Chrome 18 Google Chrome 18 Windows 7 Windows 7

    一开始就是用的/postname 格式

    沙发
  2. hzlzh hzlzh Firefox 18 Firefox 18 Mac OS X 10.8 Mac OS X 10.8

    终于你还是用文章名做为url,这是最佳S1O哟。

    板凳
  3. 小周博客 小周博客 Google Chrome 26 Google Chrome 26 Windows 7 Windows 7

    现在没有非常好的URL翻译插件,目前可用的也不错的就是玻璃泉写的微软翻译写的那个,可是我觉得还是不如以前的那个谷歌的强大。

    地板
  4. ......
  5. 网赚红宝书 网赚红宝书 Google Chrome 24 Google Chrome 24 Windows 7 Windows 7

    为什么我的头像还是个囧字呢

    41楼
  6. 小蝴蝶 小蝴蝶 Google Chrome 24 Google Chrome 24 Windows 7 Windows 7

    我品出了这个z-turn 出自前任总属鸡.. :mrgreen:

    42楼
  7. 荒野无灯 荒野无灯 Sogou Explorer Sogou Explorer Windows 7 Windows 7

    修改文章表中的postname为ID字段的值始终是不太好的方案,而且,后期可能会带来麻烦。其实你可以hook WP神一样的路由。

    43楼
  8. 小思 小思 Firefox 18 Firefox 18 Windows XP Windows XP

    ID随便升,自定义链接更好~~~

    44楼
  9. 唯美国度 唯美国度 Google Chrome 21 Google Chrome 21 Windows 7 Windows 7

    我现在就是文章ID,我就这样了,不管了,呵呵

    45楼
  10. 阳光不锈 阳光不锈 Firefox 18 Firefox 18 Windows XP Windows XP

    请问,怎么把中文的文章名变成和你一样的英文呢?

    46楼
  11. ShunYea ShunYea Firefox 18 Firefox 18 Windows 7 Windows 7

    我还是坚持用ID,而且是连续ID,看我的站点,不过每次更新得改一下代码,实际也简单。

    47楼
  12. 如何把wordpress文章固定链接ID改为POSTNAME – 围观啦 - pingback on 2013/02/18/ 23:57
    48楼
  13. Tokin Tokin UC Browser 8 UC Browser 8 Nokia 5220 Nokia 5220

    之前的链接难道都成404了…

    49楼
  14. 邪恶漫画 邪恶漫画 Google Chrome 21 Google Chrome 21 Windows XP Windows XP

    我只是禁用了自动保存,控制下id数目不升得跨度大而已

    50楼
  15. oyoy oyoy Firefox 19 Firefox 19 Windows XP Windows XP

    正在努力的把ID升到10000

    51楼
    • zwwooooo zwwooooo Firefox 19 Firefox 19 Windows 7 Windows 7

      @oyoy
      哈,我2个月就升到10000多了……当时在yo2.cn

  16. Normal Normal CoolNovo 2 CoolNovo 2 Windows 7 Windows 7

    囧。。要操作数据库的。让我望而却步了。自认对数据库一无所知。。不过看着你的方法应该可以操作。但是我还是不折腾了。老老实实的就好。

    52楼
  17. budblack budblack Google Chrome 25 Google Chrome 25 Windows 8 Windows 8

    我却是也喜欢直接用文章id的人。。。额。

    53楼
  18. 常阳时光 常阳时光 Firefox 19 Firefox 19 Windows XP Windows XP

    好吧,趁文章不是太多,改了~

    54楼
  19. 【折腾】修改了文章的固定链接 | 常阳时光 - pingback on 2013/03/15/ 13:22
    55楼
  20. 小五 小五 CoolNovo 2 CoolNovo 2 Windows 7 Windows 7

    ID连续也没有多大的用处

    56楼
  21. zeroten zeroten Firefox 20 Firefox 20 Windows 7 Windows 7

    还好我的博客不到1000

    57楼
  22. wp-lover wp-lover Firefox 20 Firefox 20 Windows 7 Windows 7

    HI,关于固定连接,确实很头疼。

    不知道ZWW有没有考虑过,用/postname/的方式,再分两种情况判断,一,默认把id值传给postname,二,在postname前添加个@时,就用编译的英文或拼音。(类似偶爱偶家的那个插件,但好像那位大哥好久没有更新了)

    这样的话,既可以将URL缩短,也可以在需要用postname的时候,自己编译。

    不知道ZWW有没有想法做个类似的插件的?:)

    58楼
    • zwwooooo zwwooooo Firefox 21 Firefox 21 Windows 7 Windows 7

      @wp-lover
      其实这个我也很那搞,而且要主机配置环境配合。你说的我不太清楚,如果只是要把postname改为postid,后台设置就可以了,加“@”应该也没问题吧,如“/@%post_id%/”

  23. 诸葛小觉 诸葛小觉 Google Chrome 29 Google Chrome 29 Windows 7 Windows 7

    不折腾了,随便它升。。。

    59楼

Leave a Reply