细心的朋友可能会发现,我博客最近的文章链接变成“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 原创,转载请以链接形式标明本文地址!
这个工作量大。SQL语句不会用~
我的一开始就是这种格式,文章链接比较简短
@bbis
工作量不大,倒是怕出错。
那你要重定向了
@airoschou
不用。
我也是手动翻译文章标题的 坑爹啊。。 翻译软件一般都不能很好的解析到心中啊
@所谓刚子
找几个关键词翻译下就行了。
@zwwooooo
不上后台写的表示很麻烦╮(╯-╰)╭
@凤翼天堂
哈哈,那就别折腾
新版无法禁止自动草稿?
@凤翼天堂 要修改程序文件才能实现id基本连续
@凤翼天堂
是自动草稿,不是自动修订、自动保存等。
@zwwooooo
=A=有什么区别么
@凤翼天堂
有,自动草稿是:你一点新建文章就会生成占用了id,即使你只是点了新建文章就推出,这个无法简单禁止,需要修改源文件才能再利用此ID
这个貌似 很有难度有点晕了
@淘宝屋
这个主要是要小心
id.html傻瓜方便不纠结。。
@大发
这个当然。
改成postname的方式是为了养眼吗?
@集趣
是为了此文章标题。
我擦,这样好麻烦的说。。。。
postname网址会好长
@牛逼思维
长无所谓,要控制级数
完蛋了我就是用的ID现在感觉改了好像很复杂的样子。先去折腾折腾。
@外贸SEO
你可以按照我说的方法试试,注意先备份。
不看还不知道,我的居然上升到2000+了,是不是也该折腾下了。。。
@咚门
还是不纠结好,随便它升
Warning: Undefined array key 1 in /www/wwwroot/zww/zww.me/wordpress/wp-content/plugins/wp-useragent/wp-useragent-detect-webbrowser-version.php on line 32
老大我说的是你买的哪的网站的vPS,我也去整个看看,我用的yard的,尼玛太慢。。。。。
@wen
看footer
也不用ID啦~
@xuzizzz
还是不用了,看着疯长的id总是纠结
手动翻译
@牧风
英文差压力
搜索引擎收录的以前链接貌似不能自动更新的吧?
@airoschou
不需要更新,你没看我文章内容……
我勒个去。。。不过换了之后,。会很长的。。好丑
@誊武
每个人在意的地方不同
现在我那里更新一篇越来越吃力了。。
@郑永
你的要求太高了
我感觉你没有必要在URL的后面加上.html了。直接用“http://你的域名/%postname%”就可以了,设置起来也简单,在固定链接那里的自定义设置里就搞定了。
现在都强调URL越短越好,加个html只是表示做了伪静态,不加.html结尾也一样是伪静态,无论怎么个伪静态都不可能是真正的静态。个人意见,仅供参考
@网赚红宝书
无所谓啦,我没考虑 s1o
额,你这里还有广告位吗?另外就是定制wordpress模板是什么价格呢?
@网赚红宝书
图片位置木有了....定制模版?要你来设计图哦,具体价格要看到设计图和功能需求才能给你.
@zwwooooo
那还有什么广告位呢?模板的事情再说好了
@网赚红宝书
Only 一个链接位置了,满员了。
Warning: Undefined array key 1 in /www/wwwroot/zww/zww.me/wordpress/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
恩,我也早搞成文章名了,,文章id是挺蛋疼的。
@jiechic
我一直想改,但重新收录代价很高,所以一直拖着