clean_post_cache()WP 2.0.0

Удаляет объектный кэш записи по переданному ID. Также будет удален кэш терминов и дочерних записей.

Функция вызывает сама себя рекурсивно, при удалении кэша дочерних записей.

Не будет работать, если $_wp_suspend_cache_invalidation не пуста. Смотрите: wp_suspend_cache_invalidation().

Кэш комментариев можно очистить через функцию clean_comment_cache().

Работает на основе: wp_cache_delete(), clean_object_term_cache()
Хуки из функции

Возвращает

null. Ничего не возвращает.

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

clean_post_cache( $id );
$id(число/WP_Post) (обязательный)
ID или объект записи, кэш которой нужно очистить.

Примеры

0

#1 Очистим кэш записи

Допустим, мы редактируем запись 25 и нам нужно очистить её кэш:

$id = 25;
clean_post_cache( $id );

Заметки

  • Global. true|false. $_wp_suspend_cache_invalidation

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

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

Код clean_post_cache() WP 6.4.3

function clean_post_cache( $post ) {
	global $_wp_suspend_cache_invalidation;

	if ( ! empty( $_wp_suspend_cache_invalidation ) ) {
		return;
	}

	$post = get_post( $post );

	if ( ! $post ) {
		return;
	}

	wp_cache_delete( $post->ID, 'posts' );
	wp_cache_delete( 'post_parent:' . (string) $post->ID, 'posts' );
	wp_cache_delete( $post->ID, 'post_meta' );

	clean_object_term_cache( $post->ID, $post->post_type );

	wp_cache_delete( 'wp_get_archives', 'general' );

	/**
	 * Fires immediately after the given post's cache is cleaned.
	 *
	 * @since 2.5.0
	 *
	 * @param int     $post_id Post ID.
	 * @param WP_Post $post    Post object.
	 */
	do_action( 'clean_post_cache', $post->ID, $post );

	if ( 'page' === $post->post_type ) {
		wp_cache_delete( 'all_page_ids', 'posts' );

		/**
		 * Fires immediately after the given page's cache is cleaned.
		 *
		 * @since 2.5.0
		 *
		 * @param int $post_id Post ID.
		 */
		do_action( 'clean_page_cache', $post->ID );
	}

	wp_cache_set_posts_last_changed();
}