2013年02月02日 WordPress 125条评论

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

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

起因:

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

纠结:

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

尝试:

其实我去年就尝试过几次,但最终不完美而失败。前几天想放弃 FTP 上传图片方式,就再次尝试把博客文章固定链接改为 https://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. 因为我博客以前的链接是这样的:https://zww.me/archives/文章ID,于是我定义了一个新的 post style:archives 2. 然后定义 archives 类型的文章链接模式为 https://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 的固定链接改为:https://zww.me/%postname%.html 7. 把主题的调用函数通通要更改一遍(如首页、分类页、文章分类、标签、热门标签、相关文章、最新评论、最新文章、热门文章、最近更新的文章等等),确保可以调用到 archives 类型的文章 博客是不是很像重生? 130202-new-rewrite

折腾吧。

zww
or
oooo

“终于不用纠结 WordPress 文章ID了:你也可以”有125条评论

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

    1. zwwooooo says:

      @网赚红宝书
      如果你一开始没头像,后来加上,等15天吧,我这有缓存。

  2. 小蝴蝶 says:

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

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

    1. zwwooooo says:

      @荒野无灯
      可是……我不懂啊

  4. 小思 says:

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

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

    1. zwwooooo says:

      @唯美国度
      其实不管就可以了。

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

  7. ShunYea says:

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

    1. zwwooooo says:

      @ShunYea
      我是懒了,所以逃避了,哈

  8. 如何把wordpress文章固定链接ID改为POSTNAME – 围观啦 says:

    [...] 5. 把原来的分类和标签的 taxonomy 改为 archives_category 和 archives_tag(表 wp_term_taxonomy) 6. 把 WP 的固定链接改为:http://zww.me/%postname%.html 7. 把主题的调用函数通通要更改一遍(如首页、分类页、文章分类、标签、热门标签、相关文章、最新评论、最新文章、热门文章、最近更新的文章等等),确保可以调用到 archives 类型的。 如果有想知道具体怎么修改的,可以去zww.me查看询问。 [...]

  9. Tokin says:

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

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

    1. zwwooooo says:

      @邪恶漫画
      我现在不用管了,不过还是禁止自动保存和修订

  11. oyoy says:

    正在努力的把ID升到10000

    1. zwwooooo says:

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

  12. Normal says:

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

    1. zwwooooo says:

      @Normal
      是啊,麻烦。

  13. budblack says:

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

    1. zwwooooo says:

      @budblack
      用id省事,哈。

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

  15. 【折腾】修改了文章的固定链接 | 常阳时光 says:

    [...] 方法来自:ZWW大叔 [...]

  16. 小五 says:

    ID连续也没有多大的用处

    1. zwwooooo says:

      @小五
      其实……这算是洁癖,不是从用处考虑

  17. zeroten says:

    还好我的博客不到1000

  18. wp-lover says:

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

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

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

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

    1. zwwooooo says:

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

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

发表评论

昵称 *

网址

B em del U Link Code Quote