本人有点完美主义,ID虽然用不完,但希望它能连续。
此方法为本人于网上收集并整理,理论上适用所有WP版本(本人WordPress3.0亲测成功):
方法一:
1、打开 wp-config.php 文件,找到以下代码:
define('DB_COLLATE','');
我此行后面插入下面内容:
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', false);
2、打开 wp-settings.php 文件,找到以下代码:
$default_constants = array(‘WP_POST_REVISIONS’ => true );
将以上代码,更改为下面的代码。
$default_constants = array(‘WP_POST_REVISIONS’ => false );
3、打开 wp-includes\default-filters.php 文件,找到以下代码:
add_action(‘pre_post_update’, ‘wp_save_post_revision’);
在最前面加上两个//,效果如下:
//add_action(‘pre_post_update’, ‘wp_save_post_revision’);
4、打开 wp-admin\includes\post.php 文件,找到以下代码:
return _wp_put_post_revision( $_POST, true );
将以上代码更改为:
return edit_post();
经过以上四个步骤之后,Wrodpress的版本修订功能,也就是Revision将被彻底禁止。
5、禁止auto draft
打开 wp-admin\includes\post.php 文件,找到以下代码:
if ( $create_in_db ) {
上面添加 $create_in_db = false; 这一步很重要
6、去除日志自动保存:
打开wordpress\wp-admin\post-new.php及post.php文件,注释掉
// wp_enqueue_script('autosave');
7、最后再进phpMyAdmin里执行以下语句:
ALTER TABLE wp_posts AUTO_INCREMENT=1;
让ID自己编号从1开始(适用于新Blog),执行前请勿必做好数据备份!
方法二:
1、直接安装super-switch插件,然后在setting里面会看到super-switch选项,可以在里面设置disable revisions和disable autosave;但是在3.0.1却不能disable auto draft,每次新写篇就会有auto draft。
2、禁用WordPress 3.0自动草稿存档:编辑wp-admin/includes/post.php文件,在if ( $create_in_db ) {语句之前加入一行$create_in_db = false; 语句,经过实际测试,增加了这一行之后,新建日志,数据库就不会出现一篇自动存档的草稿了。
第一种方法要修改多处代码,很麻烦,以后每次WordPress升级,都需要维护修改一次,工作量太大,不如用插件的方式解决。
WordPress 3.1 禁止自动草稿(auto-draft)的方法
禁止自动生成 auto-draft 的不可见草稿:
在wp-admin/includes/post.php中,搜索create_in_db,找到如下的判断语句:
if ( $create_in_db ) {
// Cleanup old auto-drafts more than 7 days old
$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
foreach ( (array) $old_posts as $delete )
wp_delete_post( $delete, true ); // Force delete
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$post = get_post( $post_id );
} else {
这段代码的功能是,清除七天以前的自动草稿,然后插入一条新草稿,如果你继续写文章并发布,那么这条草稿就被使用了,包括在后台首页有一个快速发布,也用到了这个。但如果你仅仅是点击了new post(添加文章),接下来没有输入任何内容就跳到别的页面去了或关闭了,此时仍然会生成一个自动草稿,而这个草稿,是后台不可见的,是垃圾数据。
所以修改了一下代码,将这个if判断中的内容替换成以下内容:
if ( $create_in_db ) {
// modify by akii start
global $current_user;
$post_auto_draft = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" );
if ($post_auto_draft){
$post = $post_auto_draft;
} else {
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$post = get_post( $post_id );
}
// modify by akii end
} else {
原理及说明:当数据库中有一条或多条状态为”auto-draft”的自动草稿时,取ID最小的,新文章即使用此条记录。如果没有此种类型的数据,才会新插入一条数据。并且查询数据时是根据当前的用户来判断,不会出现多用户时出错。这样就可以避免了自动草稿(auto-draft)的冗余垃圾数据。保证了日志ID的连续性。