在设置永久链接时,原打算使用用日志ID,仔细一看发现日志 ID 是不连续的。搜索一下,发现是 WordPress 的日志修订功能与自动保存功能导致的。原因找到了,只要禁用这两项功能(必须两项功能同时都禁用),就可解决 WordPress 的日志 ID 不连续。

1.禁用 WordPress 日志修订功能

在 wp-config.php 中的代码

require_once(ABSPATH . ‘wp-settings.php’);

前增加如下代码:

define(‘WP_POST_REVISIONS’,false);

关于 WP_POST_REVISIONS 这个变量的详细设置为:

true(默认)或者 -1:保存所有修订版本; false 或者 0:不保存任何版本(除了自动保存的版本); 大于 0 的整数 n:保存 n 个修订版本(+1 只保存自动保存版本),旧的版本将被删除。

那如何删除由于 Post Revisions 导致的表内的垃圾信息呢?你只需通过 phpmyadmin 执行如下 SQL 脚本,数据库操作前最好先进行一下备份。

删除是 Post Revisions 垃圾信息,请执行:

delete from wp_posts where post_type = ‘revision’;

还可以再执行:

delete from wp_postmeta where meta_key= ‘_edit_lock’;

delete from wp_postmeta where meta_key =’_edit_last’;

删除数据库中文章特殊数据表 wp_postmeta 中 meta_key 字段为 _edit_lock (代表上次修改 post 的修改时间)和 _edit_last (指最后一次编辑时间)的数据,然后全选所有表,下拉列表中选择使用 phpmyadmin “优化表”功能。

2.禁用 WordPress 自动保存功能

在 wordpress/wp-admin/ 目录下找到 post-new.php,post.php,page-new.php,page.php 这四个文件。(注:wordpress3.0 已经没有 page-new.php 与 page.php 这两个文件)在这四个文件中找到代码 wp_enqueue_script(‘autosave’); 直接删除,或者在前面加上”//”将代码注释掉,如: // wp_enqueue_script(‘autosave’); 即可。

如何将不连续的日志 ID 重新设置为连续的呢?这个是比较麻烦的,设置一个 ID 就要4条 SQL 语句,我仅仅举一个例子,将 ID 为59的文章修改为 ID 为58,需要执行以下语句。

update wp_posts set id = 58 where id = 59;
update wp_term_relationships set object_id = 58 where object_id = 59;
update wp_postmeta set post_id = 58 where post_id = 59;
update wp_comments set comment_post_ID = 58 where comment_post_ID = 59;

如果用户需要修改的文章较多,需要批量复制、修改和执行上面四行。