有很多WordPress博客的固定链接中使用了文章ID,但是WordPress由于种种原因导致了文章ID不连续的问题,也经常有博友在论坛中提问要解决这个问题,但是很少能够得到他们满意的答复。WordPress 3.0 之后的版本都会有个自动草稿,每发表一篇文章就会占两个ID号,目前还没有禁用的方法。
最近在倒腾WordPress,也遇到了这个问题,最揪心的是发布一篇文章浪费好几个id,WordPress自动存了好几份草稿。
下面讲一下我最终的解决方法:
首先找到wp_confing.php文件,在文件中添加如下代码:
- define('AUTOSAVE_INTERVAL', 36000000 ); //设置自动保存间隔,单位是秒,默认60
- define('WP_POST_REVISIONS', false ); //禁用文章修订功能
有一种说法说要放在一下这段代码后面才会生效
- /** WordPress 目录的绝对路径。 */
- if ( !defined('ABSPATH') )
- define('ABSPATH', dirname(__FILE__) . '/');
另外可将以下代码放置在主题function.php文件中,可以解决ID连续问题
- function keep_id_continuous(){
- global $wpdb;
- $lastID = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR ( post_status = 'inherit' AND post_type = 'attachment' ) ORDER BY ID DESC LIMIT 1");
- $wpdb->query("DELETE FROM $wpdb->posts WHERE ( post_status = 'auto-draft' OR ( post_status = 'inherit' AND post_type = 'revision' ) ) AND ID > $lastID");
- $lastID++;
- $wpdb->query("ALTER TABLE $wpdb->posts AUTO_INCREMENT = $lastID");
- }
- // 将函数钩在新建文章、上传媒体和自定义菜单之前。
- add_filter( 'load-post-new.php', 'keep_id_continuous' );
- add_filter( 'load-media-new.php', 'keep_id_continuous' );
- add_filter( 'load-nav-menus.php', 'keep_id_continuous' );
- // 禁用自动保存,所以编辑长文章前请注意手动保存。
- add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
- // 禁用修订版本
- remove_action( 'pre_post_update' , 'wp_save_post_revision' );
下面的这一段代码参考了作者小虾的方法,原文链接http://xiaoxia.de/keep-wordpress-post-id-continuous/