≡ Menu

手动关闭WordPress的修改文章时产生的修改版本

以下方法来自programingnote.com(英文)

重要更新:原来在这里有一个插件可用,囧rz 具体访问disabled revision(英文)

自Wordpress2.7之后,如果你再去修改已经发布的文章,如果你不够眼明手快,Wordpress会智能的帮你自动保存,有时候网络不够好,Wordpress更是智能得帮你保存N个版本的文章,然后你就会发现怎么也删除不掉它们,等你发布新文章的时候,你的文章ID会惊人的跃进(比如我的这一篇和上一篇文章即是如此)。原来Wordpress自动保存的各个版本也算到文章ID里去。

那如何把它给关掉呢?我的前提跟这位老师很像:不能把自动保存关掉,但必须把那些修改版本的产生关掉。通过搜索,我找到了答案。感谢互联网的分享精神吧。

Step 1.打开wp-includes\default-filters.php 找到以下代码

 add_action( 'pre_post_update', 'wp_save_post_revision' );
把它删除或者使用//注释掉:
// add_action( 'pre_post_update', 'wp_save_post_revision' );

Step 2.打开wp-admin\includes\post.php 找到wp_create_post_autosave函数(大约在1030 3308行),找到代码应该在3323行(我用的是中文版):

$return = _wp_put_post_revision( $post );

在这里就要修改return的参数,应为return edit_post(); 因此,function wp_create_post_autosave应该改为:

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();
}
Technorati 标签:

{ 2 comments… add one }
  • wang 二月 23, 2009, 11:17 上午

    感谢分享,我的这个方法特点是不影响自动保存的功能,用插件是做不到的。虽然有很多用户呼吁WordPress提供选项来开启/关闭revisions,但核心开发者对此却没什么兴趣。

    • 小刀周遠 二月 23, 2009, 12:00 下午

      用插件是可以做到的呀好像。而且你的做法好像需要修改下……

Leave a Comment