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

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

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

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

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


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' );
}
标签:

热门文章