北极寒流 » 网络资源 » 禁用WordPress 3.6文章修订版本功能 - 2010.08.10

禁用WordPress 3.6文章修订版本功能

wordpress的文章修订版本功能个人一直不大喜欢,所以以前都是禁用的,不过自从升级了wordpress3.6以后,以前的禁用WordPress 3.6文章修订版本功能失效了,今天找来一段新的目前还有效的代码。

在 把下面代码加在网站根目录的wp-config.php 中:

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

如果你的wordpress没有升级到3.6.那么你也可以使用下面的方法。

在主题的functions.php 加设置代码禁止文章修订的方法:

//////// 移除自动保存和修订版本
remove_action('pre_post_update', 'wp_save_post_revision' );
add_action( 'wp_print_scripts', 'disable_autosave' );
function disable_autosave() {
	wp_deregister_script('autosave');
}

其他方法:

WordPress文章版本修订功能对于很多人来说完全是垃圾数据库的制造者,所以很多玩WordPress博客的朋友都会把WordPress的文章修订功能关闭,网上关于禁用WordPress文章修订功能的方法很多种,有用插件的,也有采用代码的,插件装多了拖速度,所以在能不用插件的情况下,尽量不要去用插件,采用代码的话,但是网上有的方法在禁用WordPress文章修订功能的方法都是刚开始有效,过段时间又失效了,下面这个方法,经过本人测试,完美实现禁用WordPress文章修订功能并保留自动保存功能。

WordPress 之所以能生成修订版,是因为在更新一篇文章之前,先执行了挂在“pre_post_update”钩子上的函数。在 wp-includes/default-filters.php 中,可以看到这一行:

add_action( 'pre_post_update', 'wp_save_post_revision' );

这样每次修改都会自动调用 wp_save_post_revision 这个函数来创建修订版记录。我需要做的就是把这一行注释掉,这样就不会在 Update 后生成修订版了。

但仅仅改了这一行还不行,有一种情况仍然会产生修订版。那就是在修改已经发布的文章时,自动保存功能会产生新的修订版。我们可以在 wp-admin/includes/post.php 文件中,找到 wp_create_post_autosave 函数。通过阅读代码和注释,可以知道如果正在编辑的文章还没有自动保存过,就会创建一个修订版。为了让它仅仅起到保存的作用,需要将最后一行的

return _wp_put_post_revision( $_POST, true );

改成:

return edit_post();

整个函数如下:

function wp_create_post_autosave( $post_id ) {
$translated = _wp_translate_postdata( true );
if ( is_wp_error( $translated ) )
return $translated;

// Only store one autosave.  If there is already an autosave, overwrite it.
if ( $old_autosave = wp_get_post_autosave( $post_id ) ) {
$new_autosave = _wp_post_revision_fields( $_POST, true );
$new_autosave['ID'] = $old_autosave->ID;
return wp_update_post( $new_autosave );
}

// Otherwise create the new autosave as a special post revision
//return _wp_put_post_revision( $_POST, true );
return edit_post();
}

通过修改这两行代码,既保留了自动保存功能,又去掉了历史记录功能,另一个额外的好处是可以让文章ID连续增长。唯一不好的是需要修改源代码,这样在升级 WordPress 以后又要重新做一次。

要清理已经存在的文章修订记录,可以使用插件:Delete-Revision

评论关闭