在Wordpress中,日志版本管理(Post Revisions)和编辑日志时的自动保存都会在数据库中产生新的数据(编辑已发布的内容时),很显然这些数据的用处只是一时的,但却给今后数据库查询增加了无谓的额外开销。
对于日志版本管理,我们在wp-config.php中添加一句define('WP_POST_REVISIONS', false);
即可以轻松的完全禁用此功能,但自动保存就没有这么简单,官方没有提供开关功能,现在网上找到的方法似乎都是通过屏蔽javascript脚本,这种方法虽然可行,但在某些浏览器下可能报错,同时换个角度来看,某些时候自动保存还是有些用处的,完全禁用似乎也不太可取。
下面的代码实现了仅在编辑草稿、发表新日志或页面时启用自动保存,在重新编辑已发表的内容时则不会进行自动保存的操作,避免在数据库中产生无用的数据,方法则是在浏览器提交申请,服务器进行自动保存之前对日志的状态进行判断,如果是草稿或未找到日志ID(即新日志)则进行保存操作,否则直接退出。
<?php
/**
* 仅在编辑草稿、发表新日志或页面时启用自动保存。
* 防止编辑已发表日志页面自动保存时在数据库中产生新的数据
*
* @version 0.1
* @author JinnLynn
*/
function JKit_RemoveAutosave() {
if (!defined('DOING_AJAX') || $_POST['action'] != 'autosave')
return;
$post_id = isset($_POST['post_ID']) ? (int) $_POST['post_ID'] : 0;
if (!$post_id)
return;
$post = get_post($post_id);
if ($post->post_status == 'draft')
return;
$message = __('Autosave is disabled. ');
$res = new WP_Ajax_Response(array( 'what' => 'autosave',
'id' => $post->ID,
'data' => $message )
);
$res->send();
exit();
}
add_action('init', 'JKit_RemoveAutosave');
?>
NOTE: 同样的,你可以使用JKit Builder生成带此功能的插件。