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