Функция clean_post_cache()
в WordPress удаляет кэшированные данные конкретной записи, включая кэш терминов и дочерних записей, связанных с этой записью. Эта функция полезна, чтобы после обновления или удаления записи отображались актуальные данные.
clean_post_cache( int|WP_Post $post ): void
Описание параметров
- $post (int или WP_Post, обязательный): ID записи или объект записи, кэш которой нужно удалить.
Возвращаемое значение
- null: Функция не возвращает никакого значения.
⚠️ Примечание: Если глобальная переменная
$_wp_suspend_cache_invalidation
непуста, функция не выполнит очистку кэша. Подробнее об этом можно узнать в функцииwp_suspend_cache_invalidation()
.
Пример 1: Очистка кэша для одной записи
В этом примере показано, как удалить кэш для записи с ID 42
. Это может быть полезно, если запись была обновлена и нужно освежить данные в кэше.
// Очищаем кэш для записи с ID 42.
clean_post_cache( 42 );
Пример 2: Очистка кэша для объекта записи
Можно также передать объект записи вместо ID. В этом примере создается объект записи, и функция clean_post_cache()
используется для очистки кэша этой записи.
// Получаем объект записи с ID 18.
$post = get_post( 18 );
// Очищаем кэш для этой записи.
clean_post_cache( $post );
Пример 3: Очистка кэша после обновления записи в админ-панели
Следующий пример показывает, как можно автоматически очищать кэш записи при ее обновлении в админ-панели. Это может быть полезно для плагинов или тем, которые хотят обеспечить актуальность данных после сохранения изменений.
// Хук для очистки кэша после сохранения записи.
add_action( 'save_post', 'clear_cache_on_save' );
function clear_cache_on_save( $post_id ) {
// Убедимся, что это не автосохранение.
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
// Очищаем кэш для данной записи.
clean_post_cache( $post_id );
}
С помощью этого кода кэш записи автоматически очищается каждый раз, когда она обновляется и сохраняется.
Пример 4: Очистка кэша записи и комментариев
Если вам нужно очистить кэш не только записи, но и всех комментариев к ней, используйте clean_comment_cache()
вместе с clean_post_cache()
.
// Очистка кэша записи и комментариев.
function clear_post_and_comments_cache( $post_id ) {
// Очищаем кэш записи.
clean_post_cache( $post_id );
// Получаем ID всех комментариев для данной записи.
$comments = get_comments( ['post_id' => $post_id] );
foreach ( $comments as $comment ) {
clean_comment_cache( $comment->comment_ID );
}
}
// Применение функции для записи с ID 22.
clear_post_and_comments_cache( 22 );
Заключение
Функция clean_post_cache()
помогает поддерживать актуальные данные на сайте, удаляя устаревший кэш записей, их терминов и дочерних объектов. Использование этой функции особенно полезно при динамических изменениях контента и повышает производительность сайта, гарантируя актуальность отображаемых данных.