WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

_prime_post_caches() WP 3.4.0

Добавляет в объектный кэш указанные записи (посты). Посты, которые уже есть в кэше, пропускаются. Также создает связанный кэш терминов и метаданых.

Работает на основе: _get_non_cached_ids(), update_post_caches()
1 раз = 0.012805с = тормоз | 50000 раз = 0.78с = очень быстро

Хуков нет.

Возвращает

Null. Ничего.

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

_prime_post_caches( $ids, $update_term_cache, $update_meta_cache );
$ids(массив) (обязательный)
Массив ID записей, которые нужно проверить и если их еще нет в кэше, добавить в кэш.
$update_term_cache(true/false)
Нужно ли обновлять связанный кэш терминов (категорий).
По умолчанию: true
$update_meta_cache(true/false)
Нужно ли обновлять связанный кэш метаданных (произвольных полей).
По умолчанию: true

Примеры

#1 Добавим записи в кэш при обработке комментов

Пример из ядра, из функции get_comments().

// Prime comment post caches.
if ( $this->query_vars['update_comment_post_cache'] ) {

	$comment_post_ids = array();

	foreach ( $_comments as $_comment ) {
		$comment_post_ids[] = $_comment->comment_post_ID;
	}

	_prime_post_caches( $comment_post_ids, false, false );
}

#2 Добавим записи в кэш при получении постов

Пример из ядра, из функции get_posts().

$ids = $wpdb->get_col( $this->request );

if ( $ids ) {
	$this->posts = $ids;
	$this->set_found_posts( $q, $limits );
	_prime_post_caches( $ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] );
} else {
	$this->posts = array();
}

Заметки

  • Смотрите: update_post_caches()
  • Global. wpdb. $wpdb WordPress database abstraction object.

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

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

Код _prime_post_caches() WP 5.5.1

wp-includes/post.php
<?php
function _prime_post_caches( $ids, $update_term_cache = true, $update_meta_cache = true ) {
	global $wpdb;

	$non_cached_ids = _get_non_cached_ids( $ids, 'posts' );
	if ( ! empty( $non_cached_ids ) ) {
		$fresh_posts = $wpdb->get_results( sprintf( "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE ID IN (%s)", join( ',', $non_cached_ids ) ) );

		update_post_caches( $fresh_posts, 'any', $update_term_cache, $update_meta_cache );
	}
}

Cвязанные функции

Из метки: cache (кэш кеш)

Комментариев нет