- A+
因为我自己是强迫症,对数据库的简洁还是比较看重的,所以WordPress数据库中的一些数据在我看来其实就是不需要的垃圾数据。wp_posts表因为:自动草稿、自动保存、历史修订版本这几个功能,导致数据库wp_posts数据繁杂冗余和文章id的大规模不连续。
简单说一下这几个功能和垃圾产生的过程。分为文章发布前和发布后来说。
文章发布前:
首先,点击后台的写文章,此时数据库会产生一条post_title为自动草稿,post_status为auto-draft,post_type为post 的数据,此时如果你关掉浏览器,这条数据就成了没用的垃圾数据,你下次点击写文章还会生成同样的数据。如果你继续编辑文章,添加了内容,这条数据post_status就会变为draft,你的文章内容就会保存到里面,这就成了草稿数据,此时如果在编辑器里更改了文章内容,WordPress的自动保存功能就会过一段时间重新读取新的内容覆盖保存到这条数据中。之后如果你点击预览,它就会启用历史修订版本功能,在表中新插入一条数据,这条数据post_type为revision,post_name为类似这样的39-revision-v1的数据,这就是修订版本数据。如果多次预览就会生成多条数据。
文章发布后:
点击发布后之前的草稿数据的post_status由draft变为publish,同时也会自动产生一条修订版本数据。此时如果再进行文章的编辑改动了内容,它自动保存和点击预览的时候,因为文章已经发布了,不会修改状态为publish的数据,修订版本内容也是固定的不能修改,没有地方放新的数据,所以此时在表中会新插入一条post_type为version,post_name为39-autosave-v1这样的临时数据来存放新编辑的数据。
所以在乎数据库精简和ID的话,关闭自动保存功能和历史修订版本功能是必要的,因为这个网上也有好多教程,就不细说了。主要说一下自动草稿这个,我看网上说的并不是很完整。
有时候并没有打开写文章,也会发现表里多了好多自动草稿,这是为什么呢?因为当你点击后台的仪表盘的时候,它会有一个快速草稿的功能,也会插入自动草稿的数据。
所以可以打开主题的functions.php文件插入以下代码禁用快速草稿功能
//禁用仪表板的快速草稿功能
function example_remove_dashboard_widgets() {
// Globalize the metaboxes array, this holds all the widgets for wp-admin
global $wp_meta_boxes;
// 以下这一行代码将删除 "快速发布" 模块
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
}
add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' );
禁用了自动保存,修订版本,快速草稿之后,还要养成良好的写作习惯,打开写文章之后如果不想写了可以点击个保存草稿,下次直接编辑草稿就可以了,这样就不会再生成自动草稿的垃圾了,当然网上还有一些其他自动草稿的应对办法,个人感觉不是太完美就不在这里推荐了,感兴趣的自行搜索。还有一点就是已经发布了的文章就不要再去点击预览了,这样以后,就再也不用为wp_posts表中的垃圾数据烦心了。