wp_cache_get()WP 2.0.0

Получает данные из объектного кэша по указанным ключу и группе.

Работа с кэшем происходит с помощью экземпляра класса WP_Object_Cache. Данные сохраняются в память на время генерации страницы. Если используется плагин объектного кэширования, то данные сохраняются в объектный кэш на больший строк, чем время генерации страницы, и с ними можно работать между разными генерациями страниц. В этом собственно и есть вся суть плагинов объектного кэширования.

Подробнее про Объектный кэш в WordPress.

Смотрите также:

  • wp_cache_add() — добавляет кэш. Ничего не делает, если кэш уже есть.

  • wp_cache_set() — добавляет кэш. Обновляет кэш, если кэш уже есть.
Работает на основе: WP_Object_Cache::get()
Основа для: wp_load_alloptions()
1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.054485 сек (скорость света) | PHP 7.1.11, WP 4.9.8

Хуков нет.

Возвращает

Разное|false. Данные кэша или false, если не удалось получить данные.

Использование

wp_cache_get( $key, $group, $force, $found );
$key(строка/число) (обязательный)
Ключ идентификатор кэша.
$group(строка)
Это возможность группировать данные кэша. Позволяет использовать одинаковый ключ для разных групп кэша.
По умолчанию: ''
$force(логический)
Обновлять ли локальный кэш из постоянного во время получения данных. Постоянный кэш работает в WP только с использованием спец. плагинов.
По умолчанию: false
& $found(логический)
Что вернуть если кэш найден, но он пустой?
По умолчанию: null (вернет false, если кэш не найден)

Примеры

0

#1 Получение данных их кэша

По умолчанию большинство данных хранится в кэше. Например, опции WordPress добавляются в кэш при первом обращении, и все последующие разы эта опция будет извлекаться из кэша, а не из БД. Это сделано для того, чтобы минимизировать количество запросов к базе данных.

Вот как мы можем получить метаданные пользователя из кэша:

$user_meta = wp_cache_get( 1, 'user_meta' );
0

#2 Создаем свой кэш и получаем его где необходимо.

Допустим мы сделали тяжелый запрос к БД и данные этого запроса нам будут нужны в разных местах страницы, тогда мы может записать эти данные в кэш и в дальнейшем, если он не пустой, получать их без запроса к БД:

// устанавливаем свой ключ кэша
$cache_key = 'my_db_result';

// Если данных нет в кэше, то делаем запрос получаем данные и записываем их в кэш
$db_result = wp_cache_get( $cache_key );
if( false === $db_result ){
	$db_result = $wpdb->get_results( $query );

	wp_cache_set( $cache_key, $db_result );
}

// тут $my_db_result содержит результат запроса,
// который будет взять из кэша, если он есть или получен из БД

print_r( $db_result );

Такое сохранение кэша имеет смысл только в том случае, если на вашем сайте установлен плагин кэширования объектов.

Заметки

  • Смотрите: WP_Object_Cache::get()
  • Global. WP_Object_Cache. $wp_object_cache Object cache global instance.

Список изменений

С версии 2.0.0 Введена.

Код wp_cache_get() WP 6.4.3

function wp_cache_get( $key, $group = '', $force = false, &$found = null ) {
	global $wp_object_cache;

	return $wp_object_cache->get( $key, $group, $force, $found );
}