自动修订、自动保存、自动草稿的禁用 - WordPress教程

Wordpress 的自动修订、自动保存、自动草稿

关于WP的自动修订、自动保存、自动草稿

自动保存(Auto-Save),跟Word的自动保存功能类似。可以防止断电、浏览器关闭造成的数据未保存。 WP默认每隔60秒自动保存一次,这个功能只会创建一条记录,每隔60秒更新一次,当文章发布后,这条记录的post_status会从draft变成publish,没有一点浪费的地方。

禁用自动保存后的副作用:预览功能不可用,必须保存为草稿才能预览。

文章修订(Post-Revisioning),编辑文章时,如果文章标题、内容或者摘要等字段发生变化,WordPress就会将当前版本保存为一个修订版,类似于我们用的快照功能,方便退回。此功能会进行数据库的读写,一般也很少用到,建议直接关闭即可。

自动草稿(Auto-draft),自动草稿在我们在后台点写文章就会创建,如果我们文章保存或者发布都会进行状态转变,若我们没有做或者直接关闭了浏览器就会形成这么一条草稿。

修订和自动草稿都会占用一个ID,所以,如果像您的URL是ID格式的话,就会产生不连续的状态。

参考:https://fx.fklds.com/1052.html


所谓的文章修订版就是当每次修改文章的时候,WordPress 程序都会自动保存一次修改之前的文章版本,专业术语叫做版本控制,这样保证了在误修改的情况下可以还原之前的内容,不可否认这个功能还是非常的人性化的,但是对于像子凡这样追求数据干净不多于的人来说,这个功能似乎也并没有太大的意义,而且使用 WordPress 的许多小网站或博客都是没有这种必要的,重点是会在数据库产生极多无用的数据,从而使得数据库越来越臃肿。

虽然子凡也曾因为各种突发情况导致数据丢失或者想回退,但是依然选择禁用,因为平时写文章都习惯同记事本直接写,在电脑上,然后边写边保存,而且做到了文章格式的极简化。

方法二、当前使用主题 functions.php 文件添加代码

1.禁用 WordPress 自动保存

//禁用自动保存(方法一)
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );

//禁用自动保存(方法二)
add_action('wp_print_scripts', 'fanly_no_autosave');
function fanly_no_autosave() { wp_deregister_script('autosave'); }

提示,以上是两种禁止 WordPress 自动保存的方法,所以编辑长文章前请注意手动保存,或者使用记事本等软件先编辑好在复制到 WordPress 编辑框中发布,以防在写输入突发情况数据丢失的情况发生。

2.禁用 WordPress 修订版本

//禁用所有文章类型的修订版本
add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 );
function fanly_wp_revisions_to_keep( $num, $post ) { return 0;}

//禁用某种文章类型的修订版本
add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 );
function fanly_wp_revisions_to_keep( $num, $post ) {if ( 'post_type' == $post->post_type ) { //引号中 post_type 改为你想禁用修订版本的文章类型return 0;}return $num;
}

常见 WordPress 常见默认有的文章类型有:

  • 文章(Post Type: ‘post’)
  • 页面(Post Type: ‘page’)
  • 附件媒体(Post Type: ‘attachment’)
  • 修订版本(Post Type: ‘revision’)
  • 导航菜单(Post Type: ‘nav_menu_item’)

当然如果网站使用了自定义文章类型,那么就是自定义的名称了。

关于 WordPress 自动草稿

不得不吐槽一下这个功能,让人有些不爽,凡是我们通过 WordPress 后台点击“写文章”,WordPress 就会自动在数据库里面创建一个自动草稿的记录,如果你继续添加内容发布,这个自动草稿会被自动转换为你的文章,也就是说会自动改变状态,这就是一篇正常的文章了,没有任何冗余的数据或者自动草稿的存在,那么另外一种情况就是当我们点击写文章后,直接离开或者刷新了,WordPress 的数据表中将会留下一条自动草稿的记录。所以我们只能通过一些插件去清除,例如子凡之前推荐的《WordPress 数据库清理优化插件 WP Clean Up》。

而且 WordPress 的自动草稿没办法通过 WordPress wp-config.php 配置,或者添加相关的代码直接禁用,当然这个也是可以理解的,因为当我们点击写文章后 WordPress 就自动的给新文章在数据库中指定了一个文章 ID 记录,只是文章的默认状态被设置为自动草稿了而已。所以我们可以确定,WordPress 的文章 ID 并不是在我们点击发布或者保存才及时生成的,而是在我们点击写文章就指定了的。所以也不必过于纠结这个问题了,只有我们养成一个良好的发布文章的习惯,也是可以避免这个问题的。

当然网上还有通过修改 WordPress 源码来实现禁止 WordPress 自动草稿的方法,这里子凡就不做评论了,只能说大家都挺能折腾的,因为 WordPress 每次升级会替换文件,所以这样是没有意义的。

写在最后:以上方法均可实现相关功能,大家选择性使用就好,子凡个人不太喜欢使用方法一中利用修改 WordPress 配置文件来实现功能,不是因为不好,可能是自己心理觉得不喜欢改配置文件,仅此而已。当然,以上方法子凡是在 WordPress 4.7 版本实测有效的啦!理论上是支持 3.0 版版以后的,

参考:https://zhangzifan.com/wordpress-autosave-and-post_revisions.html


修订

WordPress自带记录文章修订版本的功能,每次编辑或修改文章,系统都会自动生成并保存一个修订版。长此以往数据库将产生大量数据冗余,最终拖慢网站的运行速度。

我们可以定期清理永久关闭此功能。

定期清理

打开主题文件夹中的 functions.php,将如下代码添加至文件末尾的?>前,保存。(主题文件夹在wp-content/themes

$wpdb->query( "
DELETE FROM $wpdb->posts
WHERE post_type = 'revision'
" );

打开网站任意文章刷新,返回wordpress后台可以看到历史修订版本已被清理干净,然后删除上述代码,需要清理时再添加。

关闭修订

如果清理了以往的文章历史版本,并且不想再产生这些内容,可以关闭此功能。

WordPress 提供了关闭方法,在 wp-setting.php 中有一个变量 WP_POST_REVISIONS,把它设置为 false 就可以屏蔽 WordPress 日志修订功能。

操作过程:打开网站根目录,找到配置文件wp-config.php 将下方代码添加其中,保存。

define('WP_POST_REVISIONS', false);

参考:https://wangejiba.com/4135.html

0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论