前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress 技巧:使用 clean_post_cache 清理日志的缓存

WordPress 技巧:使用 clean_post_cache 清理日志的缓存

作者头像
Denis
发布2023-04-15 15:32:15
4010
发布2023-04-15 15:32:15
举报
文章被收录于专栏:WordPress果酱WordPress果酱

当你不是在 WordPress 后台更新日志的,而是使用其他方法或者函数更新,并且你的 WordPress 博客使用的又是内存缓存,这时候,就极有可能日志的分类会显示的不正确。

这个时候我们可以使用 clean_post_cache(id) 函数把 id 对应的日志对象缓存,以及该日志的分类信息的对象缓存,Post Meta 的对象缓存都会清理掉,页面也能够显示正确。

clean_post_cache 也有一个同名的 Action Hook,你可以用它来在清理日志缓存之后执行一些额外的清理工作。

下面贴下 clean_post_cache 函数,看看它具体清理哪些对象缓存。

代码语言:javascript
复制
function clean_post_cache($id) {
	global $_wp_suspend_cache_invalidation, $wpdb;

	if ( !empty($_wp_suspend_cache_invalidation) )
		return;

	$id = (int) $id;

	if ( 0 === $id )
		return;

	wp_cache_delete($id, 'posts');
	wp_cache_delete($id, 'post_meta');

	clean_object_term_cache($id, 'post');

	wp_cache_delete( 'wp_get_archives', 'general' );

	do_action('clean_post_cache', $id);

	if ( $children = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d", $id) ) ) {
		foreach ( $children as $cid ) {
			// Loop detection
			if ( $cid == $id )
				continue;
			clean_post_cache( $cid );
		}
	}

	if ( is_multisite() )
		wp_cache_delete( $wpdb->blogid . '-' . $id, 'global-posts' );
}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档