24 Mar
在WordPress中,日志版本管理(Post Revisions)和编辑日志时的自动保存都会在数据库中产生新的数据(编辑已发布的内容时),很显然这些数据的用处只是一时的,但却给今后数据库查询增加了无谓的额外开销。
对于日志版本管理,我们在wp-config.php中添加一句define('WP_POST_REVISIONS', false);即可以轻松的完全禁用此功能,但自动保存就没有这么简单,官方没有提供开关功能,现在网上找到的方法似乎都是通过屏蔽javascript脚本,这种方法虽然可行,但在某些浏览器下可能报错,同时换个角度来看,某些时候自动保存还是有些用处的,完全禁用似乎也不太可取。
下面的代码实现了仅在编辑草稿、发表新日志或页面时启用自动保存,在重新编辑已发表的内容时则不会进行自动保存的操作,避免在数据库中产生无用的数据,方法则是在浏览器提交申请,服务器进行自动保存之前对日志的状态进行判断,如果是草稿或未找到日志ID(即新日志)则进行保存操作,否则直接退出。
/** * 仅在编辑草稿、发表新日志或页面时启用自动保存。 * 防止编辑已发表日志页面自动保存时在数据库中产生新的数据 * * @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生成带此功能的插件。











Leave a reply