Функция delete_transient()
удаляет указанный временный кэш (транзиент) из базы данных WordPress. Это полезно, когда кэшированные данные устарели и требуют обновления, например, после изменения поста, категории или метки. Удаление транзиентов помогает избежать использования недействительных данных и улучшает точность вывода.
delete_transient( string $transient ): bool
Параметры
- $transient (строка) (обязательный) — Имя транзиента, которое необходимо удалить. Значение передается без SQL-экранирования.
Возвращаемое значение
- Возвращает
true
, если транзиент был успешно удален, иfalse
— если удаление не удалось.
Пример 1: Удаление транзиента при обновлении поста
Когда посты обновляются, ранее кэшированные данные могут стать неактуальными. В этом примере используется delete_transient()
в сочетании с хуком save_post
, чтобы очистить транзиент, содержащий данные о популярном посте при его обновлении.
// Функция для удаления временного кэша популярного поста
function delete_popular_post_cache() {
delete_transient( 'popular_post_data' );
}
// Привязка функции к событию сохранения поста
add_action( 'save_post', 'delete_popular_post_cache' );
Этот код удаляет транзиент popular_post_data
каждый раз, когда сохраняется пост.
Пример 2: Удаление транзиента при удалении поста
Удалим транзиент с информацией о рекомендуемых постах, когда любой пост будет удален. Используем хук deleted_post
.
function clear_featured_posts_cache() {
delete_transient( 'featured_posts_list' );
}
// Добавляем функцию на хук удаления поста
add_action( 'deleted_post', 'clear_featured_posts_cache' );
Этот код поможет избежать вывода старых данных в транзиенте featured_posts_list
после удаления поста.
Пример 3: Удаление транзиента при редактировании термина
Этот пример демонстрирует удаление транзиента, когда изменяются категории или теги. Функция delete_transient()
используется с хуком edit_term
.
// Удаление транзиента при редактировании термина (категории или тега)
function delete_special_term_cache() {
delete_transient( 'term_cache_data' );
}
// Добавляем функцию на хук редактирования термина
add_action( 'edit_term', 'delete_special_term_cache' );
Этот код удаляет транзиент term_cache_data
каждый раз, когда редактируется термин (например, категория или тег), чтобы данные кэша были актуальными.
Пример 4: Очистка транзиента при обновлении пользовательского типа записи
Если используется пользовательский тип записи, например, «книга», можно очистить транзиент при сохранении или изменении записи этого типа с помощью хуков save_post_book
и edit_post_book
.
function clear_custom_post_type_cache() {
delete_transient( 'book_recommendations' );
}
// Применяем функцию к хуку сохранения пользовательского типа записи «книга»
add_action( 'save_post_book', 'clear_custom_post_type_cache' );
add_action( 'edit_post_book', 'clear_custom_post_type_cache' );
Этот код очищает кэш рекомендаций book_recommendations
, когда записи типа «книга» изменяются.
Заключение
Функция delete_transient()
— удобный инструмент для управления кэшированием данных на сайте WordPress. С его помощью можно программно удалять транзиенты, сохраняя актуальные данные и предотвращая использование устаревшей информации.