细心的朋友可能会发现wordpress平台下发布的文章ID不连续,对于我这种ID控的人来说,看着非常不爽,下边我们就来进行一番探讨。

  这个问题主要在于三个方面:Post自动保存(Auto-Save)、历史版本(Post Revisions)和自动草稿(Auto-Draft)功能。这些功能是在wordpress3.0之后出现的,而且似乎并没有修改这种不合理设计的打算。

  自动保存就是在编辑日志的时候会隔一定时间自动保存,并占据一个ID。历史版本就是更新日志后,还保留着修改前的这篇文章。这两个问题解决起来比较简单,可以修改根目录下的wp-config.php文件,在“define(''WP_DEBUG '', false);”后边添加如下代码:

/** Disable autosave and revision */
define( \'\'AUTOSAVE_INTERVAL\'\', false );
define(\'\'WP_POST_REVISIONS\'\', false );

  除此之外,还需要修改wp-admin/post-new.php和wp-admin/post.php这两个文件。将这两个文件中的wp_enqueue_script( ''autosave'' );注释掉,其中post.php还要把前面一行的if语句注释掉。

  自动草稿就是每次新建文章时,如果你后续操作没有点保存草稿或发表,而是去了其他页面,那么一条Auto-Draft记录就生成了,同样占据着一个ID。这个功能应该说连鸡肋都不是,没什么实际用处。

  对于自动草稿,目前并没有合理的解决办法。网上有修改wp-admin/includes/post.php的方法实际证明是不可行的,无法新建页面。但是我们可以从问题的根源入手,建议文章先在word或记事本里写好了再发表,不要随便点新建文章,养成这个习惯。如果不小心点了新建文章,一定要保存草稿,这样下次可以继续编辑重新利用这个ID。这也算是一个不是办法的办法。

  那么如何修改以前造成的文章ID不连续呢?可以登录phpMyAdmin,运行4条SQL语句,以将ID=100的文章修改为ID=50的为例:

update wp_posts set id = 50 where id = 100;
update wp_term_relationships set object_id = 50 where object_id = 100;
update wp_postmeta set post_id = 50 where post_id = 100;
update wp_comments set comment_post_ID = 50 where comment_post_ID = 100;

  如果用户需要修改的文章较多,需要批量执行上面四行,还是比较麻烦的。此外这种方法可能会影响收录,请慎重执行。

  另外一个方法就是进入数据库,将模式由“auto-draft”改为“draft”,这样后台就会显示这条草稿记录,以后编辑成新文章发表即可。但是这样虽然ID被利用上了,但是其顺序并不是按照实际发表文章的顺序。

最后修改:2020 年 02 月 19 日 04 : 56 PM
如果觉得我的文章对你有用,请随意赞赏