1. 白天博客首页
  2. 网站建设
  3. wordpress
  4. 使用 Memcached 内存缓存优化 WordPress 自动草稿功能

使用 Memcached 内存缓存优化 WordPress 自动草稿功能

之前白天发过一篇利用 Memcached 内存缓存来优化 WordPress ,其实 Memcached 内存缓存可以优化 WordPress 很多功能,比如本篇文章白天就来分享一下使用 Memcached 内存缓存来优化 WordPress 自动保存草稿的功能。

使用 Memcached 内存缓存优化 WordPress 自动草稿功能

WordPress 自动草稿功能

在 WordPress 后台点击新建文章的时候,都会创建一个状态为 auto-draft 的草稿,并且每次点击新建文章的时候都会新建一个,然后 WordPress 会执行一个定时作业 wp_scheduled_auto_draft_delete 将所有 auto-draft 的草稿删除了,这也是post id不连续的原因之一(有一部分是媒体、页面的锅)。

使用 Memcached 内存缓存优化自动草稿

虽说自动草稿可以对我们新建的文章起到一个保护作用,并不会造成什么问题,但是连续的创建新的 auto-draft 的草稿,然后删除,导致 post id 不连续,也算是一种浪费。如果使用 Memcached 内存缓存优化,就可以让自动草稿放到服务器内存中,一小时内直接使用,不再创建新的草稿。

操作方法很简答,只需将以下代码放到当前主题 functions.php 文件中,就可以使用 Memcached 内存缓存优化 WordPress 自动草稿功能了。

//使用 Memcached 内存缓存优化 WordPress 自动草稿功能 - https://www.seobti.com/2445.html
add_action('current_screen', function ($current_screen){
	// 只有新建文章的时候才执行
	if($screen_base != 'post' || $current_screen->post_type == 'attachment' || $current_screen->action != 'add'){
		return;
	}

	//如果内存中已有上次创建的自动草稿
	if($last_post_id = wp_cache_get(get_current_user_id(), 'wpjam_'.$current_screen->post_type.'_last_post_id')){
		$post	= get_post($last_post_id);
		if($post && $post->post_status == 'auto-draft'){
			wp_redirect(admin_url('post.php?post='.$last_post_id.'&action=edit'));	
			exit;
		}
	}

	add_action('admin_footer', function(){
		global $post;
		//将自动草稿ID缓存到内存中
		wp_cache_set(get_current_user_id(), $post->ID, 'wpjam_'.$post->post_type.'_last_post_id', HOUR_IN_SECONDS);
	});
}, 10, 2);

文章最后一次修改于2020年7月30日 22:54:01

本文来源我爱水煮鱼,由白天整理发布,其版权归 我爱水煮鱼 所有。

转载请注明文章来源:https://www.seobti.com/?p=2445

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论列表(1条)

  • 金庸小说
    金庸小说 2020年7月30日 17:03:32

    直接弄成静态的,是不是也一样?