clean_post_cache

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

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

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

Для комментарие тоже самое можно сделать через функцию clean_comment_cache()
Хуки из функции:
clean_page_cache
clean_post_cache
Возвращает

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

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

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

Примеры

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

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

$id = 25;
clean_post_cache( $id );

Код из


wp-includes/post.php

WP 4.7.2

<?php
function clean_post_cache( $post ) {
	global $_wp_suspend_cache_invalidation;

	if ( ! empty( $_wp_suspend_cache_invalidation ) )
		return;

	$post = get_post( $post );
	if ( empty( $post ) )
		return;

	wp_cache_delete( $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( 'last_changed', microtime(), 'posts' );
}

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


Оставить комментарий

Your email address will not be published. Required fields are marked *