伯虔
发布于 2016-05-30 / 743 阅读
0

wordpress文章ID不连续

先说明,这个明显是强迫症才会搞这种累死人不德好处的活,当然,我也是这种人。当初 Typecho 写文章的时候还没太在意,因为文章 ID 变化不太大,没引起我注意。当转到 wp 后,2篇文章之间 ID 相差太大,强迫症的我不能忍,于是一顿搜索找到几个方法,发现网上那些文章都是抄的,还都是一模一样的,错别字、格式什么的都没变化。好在有张戈这位技术型博主,文章写的非常好,所以这里结合下我的经验分享下。

真ID连续

  • 开始是采用这种的,毕竟强迫症,要解决就得真解决。下面是 sql 语句:
update wp_posts set id = 3 where id = 69;//ID69的文章改为ID3文章
update wp_term_relationships set object_id = 3 where object_id = 69;
update wp_postmeta set post_id = 3 where post_id = 69;
update wp_comments set comment_post_ID = 3 where comment_post_ID = 69;

但是改完几篇过后就会发现越来越不对劲呀!因为有一些 ID 是改不了的,比如菜单啥的,它也会占用ID 号,总不能为了文章连续,一个一个改吧,工作量与复杂度太大了,而且容易出错,故弃之!

伪 ID 连续

这个是看到张戈的文章后得到的方法,一开始还没看明白,后来一想,这办法,还真不错,解决方式很巧妙,这也提供了一种解决问题的方式:有时候,一个问题,正面解决不了,从另一个方面入手解决反而更好。

这里我简单解释下,想要 wp 文章 id 连续,满足的是链接上的连续,在 wp 中固定链接可以是/%post_id%.html 也可以是/%postname%.html ,设置为 post_id 就是真 ID,我们可以通过在后台中设置固定链接为/%postname%.html,然后写文章的时候将文章别名设置为阿拉伯数字(眼中的ID),这样改起来比动数据库简单、安全多啦。

下面是步骤:

  • 进入 Mysql 或者 PhpMyAdmin 执行 SQL 语句,执行下列命令:

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

  • 然后进入wordpress后台-设置-固定连接处,选择自定义链接,改为:

/archives/%postname%.html

这样以后写文章的时候只要改一下别名就可以让所有文章ID”完美“连续!目前我就是采用这种方法的。