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()

Хуки з функції
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.0.2

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->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 об'єкт.
	 */
	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' );
}

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

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