细心的朋友可能会发现,我博客最近的文章链接变成“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 类型的文章
博客是不是很像重生?
折腾吧。
- 本文标题:终于不用纠结 WordPress 文章ID了:你也可以
- 本文链接:https://zww.me/do-not-need-to-tangle-wordpress-post-id.z-turn
- 发布时间:2013年02月02日 12:56
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
为什么我的头像还是个囧字呢
@网赚红宝书
如果你一开始没头像,后来加上,等15天吧,我这有缓存。
我品出了这个z-turn 出自前任总属鸡..
@小蝴蝶
那是啥?
@zwwooooo
胡jt..
@小蝴蝶
明白了。
修改文章表中的postname为ID字段的值始终是不太好的方案,而且,后期可能会带来麻烦。其实你可以hook WP神一样的路由。
@荒野无灯
可是……我不懂啊
ID随便升,自定义链接更好~~~
我现在就是文章ID,我就这样了,不管了,呵呵
@唯美国度
其实不管就可以了。
请问,怎么把中文的文章名变成和你一样的英文呢?
@阳光不锈
自己翻译
我还是坚持用ID,而且是连续ID,看我的站点,不过每次更新得改一下代码,实际也简单。
@ShunYea
我是懒了,所以逃避了,哈
之前的链接难道都成404了…
@Tokin
不会。
我只是禁用了自动保存,控制下id数目不升得跨度大而已
@邪恶漫画
我现在不用管了,不过还是禁止自动保存和修订
正在努力的把ID升到10000
@oyoy
哈,我2个月就升到10000多了……当时在yo2.cn
囧。。要操作数据库的。让我望而却步了。自认对数据库一无所知。。不过看着你的方法应该可以操作。但是我还是不折腾了。老老实实的就好。
@Normal
是啊,麻烦。
我却是也喜欢直接用文章id的人。。。额。
@budblack
用id省事,哈。
好吧,趁文章不是太多,改了~
ID连续也没有多大的用处
@小五
其实……这算是洁癖,不是从用处考虑
还好我的博客不到1000
HI,关于固定连接,确实很头疼。
不知道ZWW有没有考虑过,用/postname/的方式,再分两种情况判断,一,默认把id值传给postname,二,在postname前添加个@时,就用编译的英文或拼音。(类似偶爱偶家的那个插件,但好像那位大哥好久没有更新了)
这样的话,既可以将URL缩短,也可以在需要用postname的时候,自己编译。
不知道ZWW有没有想法做个类似的插件的?:)
@wp-lover
其实这个我也很那搞,而且要主机配置环境配合。你说的我不太清楚,如果只是要把postname改为postid,后台设置就可以了,加“@”应该也没问题吧,如“/@%post_id%/”
不折腾了,随便它升。。。
直到今天相反,我把好长的网址改成了id.html
@郑永 现在都无所谓了,直接 id.html 还好啦,或者就直接 id 好了