真正解决WordPress文章ID连续的方法

众所周知,WordPress 发布的文章、页面会占用 ID,上传的图片/附件也会占用 ID,甚至修改文章/页面也会占用 ID,所以这一切都是导致 WordPress 文章 ID 不连续的罪魁祸首,今天整理网上的一些教程,让有“强迫症”的博主站长们能够真正实现 WordPress 文章 ID 连续。

情况一:少量页面大量文章的做法

如果你的站点大多数都是文章,页面很少(PS:所占用的 ID 可忽略),并且站点所使用的图片/附件都不是通过 WordPress 后台上传的(PS:通过 FTP 直接上传到后台指定文件夹,或在其他存储空间直接上传,比如七牛),那么建议采用本方法,那就是:禁用 WordPress 的修订版本,并修改自动保存的时间。(PS:据说直接取消自动保存功能好像不太起作用,所以建议直接修改自动保存时间比较好)

打开 WordPress 根目录下的 wp-config.php 文件,在 define('WP_DEBUG', false); 之后添加以下代码

  1. //自动保存10小时一次
  2. define('AUTOSAVE_INTERVAL', 36000);
  3. //禁用修订版本
  4. define('WP_POST_REVISIONS',false);

其中 10 小时可以自行修改,一般编辑一篇文章应该不会用到 10 个小时,比如平时 boke112 都是用 word 写好文章后再粘贴到 WordPress 后台来发布文章,所以我只需要设置 1 个小时保存一次就够了,因为我一般发布一篇文章绝不会超过 1 个小时。

情况二:文章页面很多而且后台上传图片附件

PS:为了节省数据库空间,建议也禁用修订版本和延长自动保存时间,方法同情况一。

其实只要不是经常建立新的页面,那么页面所占用的 ID 其实都可以忽略不计,关键还是后台上传图片/附件所占用的 ID,这个倒是比较多。所以情况一的方法就不太实用了,此时,我们就必须使用张戈博主提出的这种方法(详见《WordPress强迫症技巧:让文章(ID)地址完美连续(障眼法)》)来实现,具体方法如下:

1、替换旧文章(现在数据库里面的文章)的别名为文章 ID,具体做法如下:

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

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

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

方法2:使用以下 PHP 代码修改

  1. <?php
  2. /**
  3. * 将所以已发布的文章别名修改成对应ID,让文章以别名完美连续 By 张戈博客
  4. *
  5. * 文章地址:http://zhangge.net/5008.html
  6. *
  7. * Ps:备份网站数据库后,请放到WordPress根目录执行,成功后请记得删除!
  8. **/
  9. require('./wp-blog-header.php');
  10. global $wpdb;
  11. $wpdb->query("UPDATE $wpdb->posts SET post_name = ID WHERE post_status = 'publish' AND post_type = 'post'");
  12. echo 'Update Success!';
  13. ?>

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

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

2、更改固定连接设置,将自定义结构中的 /%post_id%.html 更改为 /%postname%.html。

3、新文章手动修改别名:后续编写文章的时候,只需要手动将文章别名设置为与上文连续的数字即可让文章 ID 完美连续。(PS:这个方法唯一不好的一点就是编辑文章的时候需要先查看上一篇文章的 ID 是多少,然后才能正确修改当前编辑文章的别名以使它完美连续)

小结

其实如果“强迫症”不是很严重的,个人建议采用情况一的方法会比较简单,boke112导航目前采用的也是这种方法。如果想要文章 ID 十分完美地连续下去,只能采用情况二的方法了,缺点就是需要人工修改别名,不过连文章都写了,应该也不在乎再修改一个文章别名吧。

参与评论

游客评论不支持回复他人评论内容,如需回复他人评论内容请