首页 > 禁用修订

有很多WordPress博客的固定链接中使用了文章ID,但是WordPress由于种种原因导致了文章ID不连续的问题,也经常有博友在论坛中提问要解决这个问题,但是很少能够得到他们满意的答复。WordPress 3.0 之后的版本都会有个自动草稿,每发表一篇文章就会占两个ID号,目前还没有禁用的方法。

最近在倒腾WordPress,也遇到了这个问题,最揪心的是发布一篇文章浪费好几个id,WordPress自动存了好几份草稿。

下面讲一下我最终的解决方法:

首先找到wp_confing.php文件,在文件中添加如下代码:

  1. define(‘AUTOSAVE_INTERVAL’, 36000000 ); //设置自动保存间隔,单位是秒,默认60   
  2. define(‘WP_POST_REVISIONS’, false ); //禁用文章修订功能  

有一种说法说要放在一下这段代码后面才会生效

  1. /** WordPress 目录的绝对路径。 */  
  2. if ( !defined(‘ABSPATH’) )   
  3.     define(‘ABSPATH’, dirname(__FILE__) . ‘/’);  

另外可将以下代码放置在主题function.php文件中,可以解决ID连续问题

  1. function keep_id_continuous(){   
  2.     global $wpdb;   
  3.     $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″);   
  4.     $wpdb->query(“DELETE FROM $wpdb->posts WHERE ( post_status = ‘auto-draft’ OR ( post_status = ‘inherit’ AND post_type = ‘revision’ ) ) AND ID > $lastID”);   
  5.     $lastID++;   
  6.     $wpdb->query(“ALTER TABLE $wpdb->posts AUTO_INCREMENT = $lastID”);   
  7. }   
  8. // 将函数钩在新建文章、上传媒体和自定义菜单之前。   
  9. add_filter( ‘load-post-new.php’, ‘keep_id_continuous’ );   
  10. add_filter( ‘load-media-new.php’, ‘keep_id_continuous’ );   
  11. add_filter( ‘load-nav-menus.php’, ‘keep_id_continuous’ );   
  12. // 禁用自动保存,所以编辑长文章前请注意手动保存。   
  13. add_action( ‘admin_print_scripts’, create_function( ‘$a‘, “wp_deregister_script(‘autosave’);” ) );   
  14. // 禁用修订版本   
  15. remove_action( ‘pre_post_update’ , ‘wp_save_post_revision’ );  

下面的这一段代码参考了作者小虾的方法,原文链接http://xiaoxia.de/keep-wordpress-post-id-continuous/