WordPress文章ID不连续的解决方法

以下在3.0版本经过测试。

WordPress的AutoSave、Revisions和AutoDraft功能,对于大多数用户来说是一个鸡肋,是文章ID不连续,同时大量浪费数据库资源的元凶。普通用户完全可以禁用它,由于我还没有找到一款完美的插件来解决以上所有的问题,所以只能用纯手工禁用的方法。缺点是每次升级wordpress都要重新设定一次。

1.禁用Revisions

revision 是你每保存一次 post 的时候,都把修改前的内容存成一个

revision,这样你就不用担心以前的版本找不到了。问题是,写 blog 又不是写代码,用得着这把牛刀么? 在wp-config.php中加入:

1
define("WP_POST_REVISIONS", false);[/cc] 

2.禁用AutoSave

AutoSave就是自动保存,当你new一个post的时候,每隔一段时间(默认好像是1分钟吧)就会自动生成并保存一个草稿文件。

解决方案1:将间隔时间调为1天。(推荐)

在wp-config.php中加入:

1
define("AUTOSAVE_INTERVAL", 86400);

解决方案2:彻底禁用。

打开以下4个文件:wp-admin/post-new.php、wp-admin/post.php、wp-admin/page-new.php、wp-admin/page.php(我的wordpress 3.0.5只能找到post-new.php和post.php),注释掉这行:

1
//wp_enqueue_script("autosave");

3.禁用AutoDraft

auto-draft是这样出现的,当你new一个post的时候,会直接生成一条新草稿,体现在数据库中post_status 为 auto-draft。如果你继续写文章并发布,那么这条草稿就会被正常发布,包括在后台首页有一个快速发布,也用到了这个。如果仅仅是这样,那没有问题。可是如果你打开了new post 页面,输入了一些内容,然后没有保存或者发布就离开了这个页面,那么数据库中就多了一条 auto-draft“僵尸记录”,而且你再也找不到它了。

解决方案1:每次new post先保存成草稿。
解决方案2:编辑wp-admin/includes/post.php文件,找到

1
if ( $create_in_db ) {

在之前加入一行

1
$create_in_db = false;

副作用:禁用AutoDraft和AutoSave后,“预览”功能必须在“保存草稿”后才有效果。因为在“保存草稿”或“发布”之前,数据库还没有保存你的这篇文章。

4.不要为文章上传附件

如图片、视频等附件,如果直接通过后台编辑器上传/插入,每个资源都会在wp_posts表生成一条记录,占据一个id。好的做法是把图片上传到第三方图床,或者通过ftp上传到你的服务器,然后在你的文章中加入链接。

补充:

通过上述修改后,可能无法直接修改文章的“固定链接”,如果要修改“固定链接”,请先“保存草稿”。