函数文档

clean_user_cache()

💡 云策文档标注

概述

clean_user_cache() 函数用于清理指定用户的所有缓存数据,包括用户对象、登录名、昵称、邮箱和用户元数据。它接受 WP_User 对象或用户 ID 作为参数,并在清理后触发一个动作钩子。

关键要点

  • 函数参数:$user,必需,可以是 WP_User 对象或用户 ID。
  • 缓存清理:通过 wp_cache_delete() 删除 users、userlogins、userslugs、useremail 和 user_meta 缓存组中的相关条目。
  • 动作钩子:清理后触发 'clean_user_cache' 钩子,传递用户 ID 和用户对象。
  • 相关函数:与 wp_cache_set_users_last_changed() 等函数配合使用,更新用户缓存组的上次更改时间。

代码示例

function clean_user_cache( $user ) {
    if ( is_numeric( $user ) ) {
        $user = new WP_User( $user );
    }

    if ( ! $user->exists() ) {
        return;
    }

    wp_cache_delete( $user->ID, 'users' );
    wp_cache_delete( $user->user_login, 'userlogins' );
    wp_cache_delete( $user->user_nicename, 'userslugs' );

    if ( ! empty( $user->user_email ) ) {
        wp_cache_delete( $user->user_email, 'useremail' );
    }

    wp_cache_delete( $user->ID, 'user_meta' );
    wp_cache_set_users_last_changed();

    do_action( 'clean_user_cache', $user->ID, $user );
}

注意事项

  • 在调用前需确保用户存在,否则函数会提前返回。
  • 从 WordPress 6.2.0 版本开始,用户元数据缓存也会被清理。
  • 该函数自 3.0.0 版本引入,4.4.0 版本添加了动作钩子。

📄 原文内容

Cleans all user caches.

Parameters

$userWP_User|intrequired
User object or ID to be cleaned from the cache

Source

function clean_user_cache( $user ) {
	if ( is_numeric( $user ) ) {
		$user = new WP_User( $user );
	}

	if ( ! $user->exists() ) {
		return;
	}

	wp_cache_delete( $user->ID, 'users' );
	wp_cache_delete( $user->user_login, 'userlogins' );
	wp_cache_delete( $user->user_nicename, 'userslugs' );

	if ( ! empty( $user->user_email ) ) {
		wp_cache_delete( $user->user_email, 'useremail' );
	}

	wp_cache_delete( $user->ID, 'user_meta' );
	wp_cache_set_users_last_changed();

	/**
	 * Fires immediately after the given user's cache is cleaned.
	 *
	 * @since 4.4.0
	 *
	 * @param int     $user_id User ID.
	 * @param WP_User $user    User object.
	 */
	do_action( 'clean_user_cache', $user->ID, $user );
}

Hooks

do_action( ‘clean_user_cache’, int $user_id, WP_User $user )

Fires immediately after the given user’s cache is cleaned.

Changelog

Version Description
6.2.0 User metadata caches are now cleared.
4.4.0 'clean_user_cache' action was added.
3.0.0 Introduced.