跳到主要内容

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

起因:

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

纠结:

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

尝试:

其实我去年就尝试过几次,但最终不完美而失败。前几天想放弃 FTP 上传图片方式,就再次尝试把博客文章固定链接改为 https://mac163.com/文章名.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://mac163.com/archives/文章ID,于是我定义了一个新的 post style:archives

2. 然后定义 archives 类型的文章链接模式为 https://mac163.com/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://mac163.com/%postname%.html

7. 把主题的调用函数通通要更改一遍(如首页、分类页、文章分类、标签、热门标签、相关文章、最新评论、最新文章、热门文章、最近更新的文章等等),确保可以调用到 archives 类型的文章

博客是不是很像重生?

回到顶部