clean_user_cache() WP 3.0.0

Очищає весь кеш вказаного користувача.

Працює на основі:
wp_cache_delete()
1 раз – 0.000052 сек
(дуже швидко) | 50000 разів – 8 сек
(швидко) |
PHP 7.0.2, WP 4.4.2

Хуки з функції
Завжди NULL.

Використання

clean_user_cache($user);
$user
(WP_User/число) (обов’язковий)
ID або об’єкт користувача, кеш якого потрібно повністю очистити.

Приклади

0

#1 Очищення кешу користувача

Допустимо ми оновлюємо користувача і в процесі оновлення змінив його дані, наприклад окремим запитом в БД. Тепер поточні дані можуть не збігатися з тими, що ми отримаємо з кешу за допомогою get_userdata() або з тими, що знаходяться в глобальній змінній $current_user.

Щоб оновити всі ці дані, потрібно повністю очистити кеш користувача:

$user_id = 12;
clean_user_cache($user_id);

нотатки

  • Global. WP_User. $current_user The current user object which holds the user data.

список змін

З версії 3.0.0Введено.
З версії 4.4.0clean_user_cache був added.
З версії 5.8.0Знижує глобального користувача instance if cleaning user cache for current user.

Код clean_user_cache() WP 6.0.2

function clean_user_cache( $user ) {
	Global $current_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_email, 'useremail');
	wp_cache_delete( $user->user_nicename, 'userslugs' );

	/**
	 * 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);

	// Refresh the global user instance if the cleaning current user.
	if ( get_current_user_id() === (int) $user->ID ) {
		$user_id = (int) $user->ID;
		$ current_user = null;
		wp_set_current_user($user_id, '');
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *