WordPress去除文章修订自动保存自动草稿

技术 1437 次围观 13 次吐槽

wordpress

  想必很多人都会遇到发布文章后 ID 不连续的问题,比如有的时候上一篇文章是1,下一边直接到28了甚至更大。对于我这样以 %post_id%.html 为 URL 后缀的人,多少会有点 ID 洁癖。经过搜索和实验,发现了比较简单的方法,解决了这个问题,并记录如下。
  造成发布文章后 ID 不连续的原因有三个:文章修订(Post Revisions)、自动保存(Auto-Save)、自动草稿(Auto-Draft)。

去除文章修订和自动保存功能
打开网站根目录下的 wp-config.php 文件,在 if ( !defined(‘ABSPATH’) ) 下面添加如下代码:

/** 关闭WordPress日志修订功能 */
define('WP_POST_REVISIONS', false);

/** 关闭WordPress自动保存功能 */
define('AUTOSAVE_INTERVAL', false); 

去除自动草稿功能
查找网站根目录/wp-admin/includes/post.php中的第468行开始,代码如下:

if ( $create_in_db ) {
        $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
        $post = get_post( $post_id );
        if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
            set_post_format( $post, get_option( 'default_post_format' ) );
} else {

替换为

	if ( $create_in_db ) {
		// Get current user infomation
		global $current_user;
		// Get a earliest auto-draft
		$post = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_type = '$post_type' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" );
		if ( !$post ) {
			$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
			$post = get_post( $post_id );
		}
		if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
			set_post_format( $post, get_option( 'default_post_format' ) );
	} else {

经过亲身体验,完美解决发布文章后 ID 不连续的问题。

参考链接:
http://www.diguage.com/archives/5.html
http://429006.com/article/technology/3046.htm

转载请注明:秋水逸冰 » WordPress去除文章修订自动保存自动草稿

发表评论
取消评论
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
表情

已有评论 (13)

  1. 试了,为啥数据库里同一个post还是有多个的记录?我是wp新建的站,加上你的代码后才发post的。 post_status post_type publish post inherit revision phpmyadmin进入,这是同一个post的两条记录,那个是最新的记录?
    wafox3年前 (2014-05-08)回复
    • 我写这篇文章的时候 wordpress 还是 3.7 版本,当时测试下来确实是可以让 post ID 连续,但现在已经升级到 3.9 了之后,该方法失效。我的博客也是如此。所以,固定链接最好还是改成 %postname% 这种比较好吧。
      秋水逸冰3年前 (2014-05-08)回复
      • 我是用WordPress 3.6.1新建的站,固定链接 /%postname%/
        wafox3年前 (2014-05-08)回复
        • post 表里,状态为 publish 的才是最新的,是已发布的文章。
          秋水逸冰3年前 (2014-05-08)回复
          • 照理,我用了你的代码,去除文章修订和自动保存功能,去除自动草稿功能, 应该只有一条状态为 publish 的记录,为啥还有inherit revision状态的记录?
            wafox3年前 (2014-05-10)回复
  2. WordPress 3.6新建的站,固定链接 /%postname%/, 已加上你的“去除文章修订和自动保存功能”代码, 你的第二段代码是用来解决“发布文章后 ID 不连续”, 我是新站还没有文章,这个就不用改了吧? 我需要“去除自动草稿功能”, 代码应该怎么写?请教谢谢
    wafox3年前 (2014-05-02)回复
    • 用本文中的去除自动草稿功能即可。修改/wp-admin/includes/post.php文件。
      秋水逸冰3年前 (2014-05-02)回复
  3. 博主可以试试 WP clean插件,专门用来处理文章修订(Post Revisions)、自动保存(Auto-Save)、自动草稿(Auto-Draft)的插件
    司马传3年前 (2014-01-26)回复
    • 这篇文章主要是为解决发布文章后 ID 不连续的问题。目前还没有插件能做到这样的功能。WP clean只是用来清理数据库里冗余的文章修订(Post Revisions)、自动保存(Auto-Save)、自动草稿(Auto-Draft)而已。
      秋水逸冰3年前 (2014-01-26)回复
  4. 马上试试,先谢谢博主了~~
    Stokis3年前 (2013-12-03)回复
    • 亲身实验OK,你看我后续的文章ID是不是都连续了?
      秋水逸冰3年前 (2013-12-03)回复
  5. 哪个版本的?
    蒲松林3年前 (2013-11-19)回复