Функция wp_cache_set()
в WordPress предназначена для сохранения данных в кэш. Она позволяет записывать и перезаписывать значения кэша, независимо от того, существует ли уже кэш с указанным ключом. Это делает ее полезной для управления данными, которые часто запрашиваются, но не меняются часто.
wp_cache_set( int|string $key, mixed $data, string $group = '', int $expire = 0 ): bool
Параметры
$key
(int|string, required) — Ключ кэша, который будет использоваться для последующего извлечения данных.$data
(mixed, required) — Данные, которые нужно сохранить в кэше.$group
(string, optional) — Группа, в которой будет храниться кэш. Позволяет использовать одинаковые ключи в разных группах. По умолчанию:''
.$expire
(int, optional) — Время жизни кэша в секундах. По умолчанию:0
(бессрочно).
Возвращаемое значение
Функция возвращает true
, если данные успешно записаны в кэш, или false
, если произошла ошибка.
Пример 1: Кэширование количества постов
В этом примере мы будем кэшировать количество постов с определенным статусом. Если данные уже есть в кэше, мы их получаем, в противном случае выполняем запрос к базе данных и сохраняем результат в кэше.
function get_post_count_by_status( $post_status = 'publish' ) {
$cache_key = 'post_count_' . $post_status; // Уникальный ключ для кэша
$post_count = wp_cache_get( $cache_key ); // Пытаемся получить кэш
// Если кэш пустой, выполняем запрос к базе данных
if ( false === $post_count ) {
global $wpdb;
$post_count = $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = %s",
$post_status
)
);
// Сохраняем результат в кэш
wp_cache_set( $cache_key, $post_count );
}
return $post_count; // Возвращаем количество постов
}
// Пример использования функции
echo 'Количество опубликованных постов: ' . get_post_count_by_status( 'publish' );
Пример 2: Кэширование данных из API
В этом примере мы будем получать данные из внешнего API и кэшировать ответ. Если кэш уже существует, мы просто вернем его, избегая повторных запросов.
function fetch_posts_from_external_api() {
$cache_key = 'external_posts_cache'; // Уникальный ключ для кэша
$posts = wp_cache_get( $cache_key ); // Пытаемся получить кэш
// Если кэш пустой, выполняем запрос к API
if ( false === $posts ) {
$response = wp_remote_get( 'https://jsonplaceholder.typicode.com/posts' );
if ( is_wp_error( $response ) ) {
return ''; // Если произошла ошибка, возвращаем пустую строку
}
$posts = wp_remote_retrieve_body( $response );
// Сохраняем ответ в кэш на 1 час
wp_cache_set( $cache_key, $posts, '', HOUR_IN_SECONDS );
}
return $posts; // Возвращаем данные из кэша или из API
}
// Пример использования функции
$external_posts = fetch_posts_from_external_api();
echo $external_posts; // Отображаем полученные данные
Пример 3: Кэширование результатов запроса к базе данных
Если у вас есть сложный запрос к базе данных, вы можете кэшировать его результат, чтобы избежать повторных вызовов к базе данных.
function get_books_from_db() {
$cache_key = 'books_cache'; // Ключ для кэша
$books = wp_cache_get( $cache_key ); // Пытаемся получить кэш
// Если кэш пустой, выполняем запрос к базе данных
if ( false === $books ) {
global $wpdb;
$books = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'books'" );
// Сохраняем результаты в кэш
wp_cache_set( $cache_key, $books );
}
return $books; // Возвращаем результат
}
// Пример использования функции
$books_data = get_books_from_db();
print_r( $books_data ); // Отображаем данные книг
Заключение
Функция wp_cache_set()
является мощным инструментом для управления кэшем в WordPress. Она позволяет сохранять и перезаписывать данные, что помогает повысить производительность и снизить нагрузку на сервер за счет снижения количества запросов к базе данных и внешним API. С правильным использованием кэша вы можете значительно ускорить загрузку страниц вашего сайта и улучшить пользовательский опыт.