网站建设

WordPress强迫症技巧:让文章(ID)地址完美连续(障眼法)

Jager · 1月19日 · 2015年 6545次已读

这几天博客一直被 CC 攻击,虽然也没带来什么影响,但是因为多 IP 的并发会导致带宽不够,所以暂时用上了百度云加速。因此,导致之前前台刷新缓存功能也就失效了,因为百度云加速节点还缓存了一份呢!

所以,这些天折腾了下 WordPress 评论的动态加载机制,而且已成功实现!打算先测试 2 天,没有问题之后再发文分享,确保读者拿到的是最完善的的代码与教程。

今天有博友在中国博客联盟的群里提到了 WordPress 文章 ID 不同步的问题。我作为强迫症,又不喜欢用乱糟糟的文章名称来作为固定链接,所以对于 WordPress 文章 ID 不连续也是深恶痛绝已久!WordPress 文章 ID 不连续这个问题,网络上有很多千篇一律的教程,都是要你关闭文章修订版本、关闭自动草稿,完了还来一句:“这样就可以完美解决文章 ID 不连续问题了。”

实际上,按照这些方法操作一遍之后,你会发现这个问题依然没有解决!虽然 ID 不连续问题有所缓解,但是只要你上传图片或其他附件,就会占用 ID,导致文章 ID 不连续!所以,这个问题依然没能解决!!!

那到底怎样才能彻底解决?

从上传图片那一步看,我们只要找到上传图片的处理代码,然后将数据库操作代码给屏蔽了,就能彻底根治这个问题!但是,先不说修改这些核心代码如何如何麻烦,一旦 WordPress 更新,我们又得重新来一遍!所以,不到万不得已,我们最好不要动 WordPress 核心代码。

那该如何是好?

今天,讨论这个问题的时候,突然灵光一闪,既然直接实现有困难,那我们就换一个思路好了!

思路如下:

①、在后台固定链接设置中,将文章固定链接设置为/%postname%.html 的形式;

②、写文章时,将文章别名设置为阿拉伯数字形式,并且和上下文保持连续即可。

那么问题来了,新博客从头开始确实可以每次写文章都用连续的数组作为 ID,那我们这种有了不少文章的老博客怎么办?难道真的只有新博客可以用这个方法,老博客只能干瞪眼?其实不然,请继续往下看!

已有不少文章的博客,出于 SEO 考虑,我们不可能因为文章 ID 不连续就全部重新来过一次,造成了大量的 404。那我们换一个角度:我们还是用%postname%这个思路,然后将已存在的文章的别名直接修改为它对应的 ID,以后新写的文章则直接将别名设置为与上一篇连续的数字即可!虽说,老文章存在不连续,但是至少以后发布的新文章是绝对连续的,也算是间接满足了一下强迫症的需求。

下面说具体做法:

这要一篇一篇去修改旧文章别名=ID 也太苦逼了!

所以我们可以直接修改数据库来批量设置别名=文章 ID:

方法 1、进入 mysql 命令或者 phpmyadmin 的 SQL,执行如下命令即可:

update wp_posts set post_name=ID where post_status='publish' and post_type='post';

Ps:wp_posts 是 WordPress 的文章数据表,wp_ 是默认的前缀,如果自定义更改过,请根据实际修改即可。 

方法 2、如果是虚拟主机,可以使用以下 PHP 代码:

<?php
/**
* 将所以已发布的文章别名修改成对应 ID,让文章以别名完美连续 By 张戈博客
*
* 文章地址:https://zhang.ge/5008.html
*
* Ps:备份网站数据库后,请放到 WordPress 根目录执行,成功后请记得删除!
**/

require('./wp-blog-header.php');
global $wpdb;
$wpdb->query("UPDATE $wpdb->posts SET post_name = ID WHERE post_status = 'publish' AND post_type = 'post'");
echo 'Update Success!';
?>

将以上代码保存为 php 文件,比如 uppostname.php,并上传到网站根目录,执行即可,成功后记得删除!

Ps:所有设置数据库的操作务必记得先备份,避免因失误带来无法挽回的损失。

成功完成以上步骤之后,你之前发布的文章的别名就全部变成了对应的 ID 了!这时候你就可以放心大胆的将固定链接设置为/%postname%.html 了!后续写文章,手动将文章别名设置为与上文连续的数字即可让文章地址完美连续!

目前张戈博客有 300 多篇文章,ID 已用到了 5000+,已实施以上方法,后续的文章将从 5009 完美连续!!

贴张效果截图:

WordPress强迫症技巧:让文章(ID)地址完美连续(障眼法)

也许有些人会觉得这个方法太麻烦,每次写文章不但需要看一下上一篇文章的别名用到哪个数字了,还要额外手动修改别名。但尼玛是强迫症啊,还喜欢偷懒的话,该干嘛干嘛去啊,千万别纠结这些没用的,小心着急上火哟!

好了,文章介绍的方法非常简单,希望那些要用 WordPress 做站、并且有强迫症的朋友,能早点看到这篇文章,免得后面抓耳挠腮哟!

36 条回应
  1. 秋叶个人博客 2015-1-19 · 23:15

    好一个障眼法~我都是通过修改草稿id达到目的的 :grin:

    • avatar
      Jager 2015-1-20 · 14:08

      那你的方法更苦逼 :lol:

  2. 瑾瑜 2015-1-20 · 10:42

    很反感那些盲目转载,不验证实际效果的人~

  3. 小武 2015-1-20 · 10:48

    果然是强迫症 :arrow: 连续不连续有啥用呢

    • avatar
      Jager 2015-1-20 · 10:51

      文章没多少篇,ID已经到了5000了,有点不爽,相信我这种强迫症不在少数,所以还是分享一下。文章已更新,同样适合老博客。

      • 小武 2015-1-20 · 10:56

        还是我以前那种乱糟糟的url比较好. 看不出来哪个是ID, 就不用闹心了. :lol:

  4. 陌小雨 2015-1-20 · 11:56

    发现爱折腾的人大多数都有强迫症呀,看来你我并不孤单!顶起!!测试:百度浏览器、世界之窗的浏览器能否识别?

  5. oldcheetah 2015-1-20 · 12:29

    这真是闲得蛋痛的方法。

    • avatar
      Jager 2015-1-20 · 13:42

      :evil: 有需求就有市场。

  6. 同盟源 2015-1-20 · 13:07

    :arrow: 签到成功!签到时间:下午12:51:51,每日签到,生活更精彩哦~

  7. Me.稀奇 2015-1-20 · 14:40

    亲,有人喊你戈戈不?我觉得这个名字多好听的,哈哈!

    • avatar
      Jager 2015-1-20 · 17:40

      叫我哥哥不是更好么?

  8. 实验室仪器 2015-1-20 · 22:15

    那么问题来了,我得mysql 不能连接了! 晕死

    • avatar
      Jager 2015-1-21 · 13:26

      :cool: 那就用php代码

  9. 中国历史 2015-1-21 · 20:43

    连续挺好,不过关心地址的人有多少呀

    • avatar
      Jager 2015-1-21 · 20:52

      强迫症这个小圈子而已 :mrgreen:

  10. 幻杀博客 2015-1-24 · 15:57

    还好我没有强迫症

  11. 烂人心 2015-2-14 · 21:20

    我比较想用中文文章名来做固定连接

  12. yyyyyyyhb 2015-2-27 · 0:59

    虽然我有强迫症,但还好我的博客用英文名,班级网站用班级周刊期号,原来博客用博主这种方法然后被我废掉了2333

  13. 艾薇百科 2015-3-24 · 22:25

    虽然我有强迫症,但是技术不到家,不敢折腾

  14. BOKE123 2015-5-22 · 9:14

    好像如果图片存放在本地,好像也要占用ID,不知道应该如何解决?

    • avatar
      Jager 2015-5-22 · 12:26

      我这篇文章就可以解决你这个问题,不管你ID怎么变,都没事,仔细看下内容吧!

  15. 阿里书籍 2015-6-2 · 20:44

    不错的方法 学习了

  16. 西贝博客 2015-6-4 · 16:48

    我有强迫症,但这个对技术的要求有点高,搞不定啊

  17. kashu 2015-7-29 · 22:16

    博主这方法感觉挺好,我试试看
    另,评论区域里的“滑动提交评论”插件我安装后都不显示出来(服务器没启用缓存,浏览器缓存也全清了,启用插件后就是没有显示出来)?需要额外改什么设置吗?

    我的WP版本是目前最新的,插件也是从wordpress官方网站下载下来的最新版。

  18. 半情调 2015-8-15 · 19:14

    学习了 :oops:

  19. boke112导航 2015-10-19 · 11:45

    我记得第一次使用WordPress的时候就是人工输入设置好的数字ID,可惜未能坚持,后面就改为文章的ID自动显示了,还是懒的缘故。

  20. 爱妮希,小希日记! 2016-9-15 · 20:23

    强迫症表示在网上试了N多方法重装了N遍之后,终于发现了这篇文章!原来转变一下思路,路又变德宽广起来了!

  21. alin 2017-9-22 · 11:16

    如果能做成插件的形式,自动提取postname的最大数+1作为新文章的别名,这样省去了自己填写的麻烦就更好了。

    • avatar
      Jager 2017-9-22 · 12:32

      自动的模式其实也写过代码,结果发现实际使用有点小问题,可能需要区分草稿还是发布的问题,比如有2篇草稿,就得加入更加复杂的判断。。。有兴趣的话你可以研究研究。

  22. 7S分享网 2017-12-2 · 18:03

    现在4.9的系统还能不能用这个方法哦

  23. h3cse 2018-1-31 · 15:10

    很好的分享,作为一个新手站长,请多多指教

  24. 速狐 2018-5-2 · 8:10

    看了这篇文章,本来不纠结的心变得纠结了。

  25. 速狐 2018-5-2 · 8:11

    感觉id连续没必要

  26. smallsoup 2018-7-29 · 9:34

    很实用

  27. 王胖子 2018-12-30 · 9:18

    有必要吗?我的文章才10000多,因为图片很多,ID都到百万了