2013年02月02日 WordPress 127条评论

终于不用纠结 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了:你也可以”有127条评论

  1. Simnovo says:

    一开始就是用的/postname 格式

    1. zwwooooo says:

      @Simnovo
      所以说嘛……一开始要走对

  2. hzlzh says:

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

    1. zwwooooo says:

      @hzlzh
      我可没考虑S1O,主要是纠结那个ID上升太快,才700多篇文章,ID都到15000以上了……

    2. Musk says:

      @zwwooooo id有奔10万的趋势,早就不选wp了,肠子都悔青了

    3. zwwooooo says:

      @Musk
      其实你不在意就无所谓了

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

    1. zwwooooo says:

      @小周博客
      这个……我是手动google翻译,囧

    2. @zwwooooo
      回复了个地址貌似被SPAM了 大叔看下 那个插件的地址

    3. zwwooooo says:

      @小周博客
      我还是手动吧,反正文章不多。

  4. 额 我一开始就/postname

    1. zwwooooo says:

      @时光的线条
      所以……你不用纠结

  5. axiu says:

    果然折腾……直接用的post name,有段时间还在纠结要不要换成id,因为英文的别名好难翻译,而且常常忘记。

    1. zwwooooo says:

      @axiu
      我在想要不要直接 id.html,但这样和以前不一样么 - -

  6. vev says:

    以前用wp时是文章ID,id太长也没什么吧

    1. zwwooooo says:

      @vev
      其实是没啥,不纠结就行了,我的另外一个目的是把博客一分为二吧,看我新分类也就几个了。

  7. 第三眼 says:

    牛人折腾得起~

    1. zwwooooo says:

      @第三眼
      这……应该是肯动手就能折腾吧。

  8. dee says:

    这样感觉URL略微有点长……还是喜欢简洁的 :mrgreen:

    1. zwwooooo says:

      @dee
      哈哈哈,我现在又想改回 id.html 哈哈哈

  9. 灰狼 says:

    我还是继续用ID,现在改的话,损失会很大,而且我的ID,自从换了Typecho,基本上是连续的

    1. zwwooooo says:

      @灰狼
      那就无需折腾了

  10. 改 slug 有种不完美感,毕竟 slug 也有语义。

    也遇到过同样的问题,个人采用的方法是从 WP_Rewrite 下手,可定义的开放度很高。

    1. zwwooooo says:

      @Chong Freeman
      我只是保持原来文章url能访问即可。WP_Rewrite有时会有问题,如我现在新文章想改回 id.html 模式却无效。

  11. 郑永 says:

    好啦,现在你的地址跟我一样长了,哈哈。

    1. zwwooooo says:

      @郑永
      哈,你英文好,我就麻烦了,现在我都想改回 id.html 了

    2. 郑永 says:

      @zwwooooo
      我那是用插件自动生成英文的。

    3. zwwooooo says:

      @郑永
      哈,懒人方法,不过有时题目会很长

  12. 小V says:

    我当时建博客的第一件事就是改成这样的固定链接,...

    1. zwwooooo says:

      @小V
      一开始当然好啦 ,我是有历史问题,这些会影响权重。

  13. Feeng says:

    之前用postname,但是翻译的结果和链接长度让人蛋碎,最后还是用文章ID了. 囧

    1. zwwooooo says:

      @Feeng
      的确是……比较折腾,我还在考虑是不是换回 id.html,真折腾

  14. 野蛮人 says:

    纠结id问题很久了。唉。。。 :???:

  15. 阿福 says:

    有个不太明白的地方就是- -中文英文翻译啥的。。。你的文章名做固定连接的话,那链接名用啥插件或者函数实现的?- -这个是我不敢用文章名的原因。。。

    1. zwwooooo says:

      @阿福
      目前是人工……

  16. 一开始为了SEO就用了POST NAME 现在做新站懒了 直接POST ID了 不过你的100000+那就有点恐怖了。 :mrgreen:

    1. zwwooooo says:

      @waiting-无限博客
      10000+是博客一开始不是独立博客导致的……

  17. 茶话汇 says:

    文章ID超过10000+有啥问题吗?

    1. zwwooooo says:

      @茶话汇
      没问题,你不纠结的话什么都不是问题。

  18. Derek says:

    手工翻译无压力啊,http://www.derekblog.com/2013/02/02/sql-server-2008-uninstall/
    我唯一纠结的就是当年这么脑残,选了个年月日也在链接里面,这么多年了,算了。

    1. zwwooooo says:

      @Derek
      我有压力……你就继续这样吧,这真不好改……

  19. wen says:

    亲阿,站速度好快啊,用的哪的vps阿??

    1. zwwooooo says:

      @wen
      美国的……注意优化配置吧。

  20. orvice says:

    我一开始也是postname,其实不用整个标题都翻译的,随便找几个单词做标题。。

    1. zwwooooo says:

      @orvice
      对,我现在就是这样了,找点关键词就行了。

回复给 常阳时光 ¬
取消回复

昵称 *

网址

B em del U Link Code Quote