Ведение статистики просмотров записей — важная функция для многих сайтов на WordPress. Однако накопление большого количества данных о просмотрах может замедлять работу сайта и увеличивать размер базы данных. В этой статье мы разберём, как автоматизировать удаление старых просмотров в WordPress, освободить базу данных от лишних данных и при этом сохранить полезную аналитику.
Почему важно очищать данные о просмотрах в WordPress
Плагины и собственные решения для отслеживания просмотров часто сохраняют информацию в базе данных, например, в кастомных таблицах или метаполях записей. Со временем эти данные накапливаются, что приводит к:
- Увеличению размера базы данных и времени выполнения запросов.
- Снижению производительности сайта, особенно на хостингах с ограниченными ресурсами.
- Риску возникновения ошибок и проблем с резервным копированием и восстановлением.
Автоматическое удаление устаревших данных поможет поддерживать базу в оптимальном состоянии и избежать проблем с производительностью.
Где хранятся данные о просмотрах в популярных плагинах
Для правильной автоматизации важно понимать, как и где сохраняются просмотры. Вот примеры хранения:
- WP PostViews — просмотры хранятся в метаполе записи с ключом
views. - Jetpack Stats — использует внешние сервисы, удаление локальных данных не требуется.
- Simple Post Views — просмотры тоже в метаполе
post_views_count. - Собственные решения могут использовать отдельные таблицы в базе данных.
Для примера дальше возьмём ситуацию с метаполями post_views_count, чтобы показать универсальный способ очистки.
Автоматизация удаления старых просмотров с помощью WP-Cron
Для удаления устаревших просмотров можно написать функцию, которая будет запускаться регулярно с помощью встроенного планировщика задач WordPress — WP-Cron.
Пример функции для сброса просмотров старых записей
function wpkeys_reset_old_post_views() {
global $wpdb;
$days_to_keep = 30; // Храним данные только за последние 30 дней
$date_limit = date('Y-m-d H:i:s', strtotime('-' . $days_to_keep . ' days'));
// Получаем ID записей, опубликованных раньше даты лимита
$old_posts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_date < %s AND post_status = 'publish' AND post_type = 'post'",
$date_limit
));
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
// Устанавливаем количество просмотров в 0
delete_post_meta($post_id, 'post_views_count');
}
}
}
// Хук для запуска функции по крону
add_action('wpkeys_daily_cleanup', 'wpkeys_reset_old_post_views');
// Планируем задачу при активации темы или плагина
function wpkeys_schedule_cleanup() {
if (!wp_next_scheduled('wpkeys_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpkeys_daily_cleanup');
}
}
add_action('wp', 'wpkeys_schedule_cleanup');Данная функция удаляет метаполе post_views_count у публикаций старше 30 дней. Вы можете изменить логику, например, сбрасывать счетчик или удалять записи из кастомных таблиц.
Оптимизация базы данных после удаления просмотров
После удаления большого количества данных полезно выполнить оптимизацию таблиц базы данных. Это можно сделать с помощью SQL-запроса:
function wpkeys_optimize_database() {
global $wpdb;
$tables = [
$wpdb->posts,
$wpdb->postmeta
];
foreach ($tables as $table) {
$wpdb->query("OPTIMIZE TABLE {$table}");
}
}
// Запускаем оптимизацию раз в неделю
add_action('wpkeys_weekly_optimization', 'wpkeys_optimize_database');
function wpkeys_schedule_optimization() {
if (!wp_next_scheduled('wpkeys_weekly_optimization')) {
wp_schedule_event(time(), 'weekly', 'wpkeys_weekly_optimization');
}
}
add_action('wp', 'wpkeys_schedule_optimization');Оптимизация освободит место и улучшит скорость работы запросов в базе данных.
Использование плагинов для управления просмотрами и очисткой данных
Если вы предпочитаете не писать код, можно использовать плагины с функционалом очистки и оптимизации:
- Clearfy Pro — плагин с возможностями оптимизации базы и управлением данных.
- WPRemark — для сбора и управления отзывами, имеет инструменты очистки метаданных.
Использование таких решений поможет избежать ошибок и упростит обслуживание сайта.
Важные советы по работе с данными просмотров
При реализации автоматической очистки учтите следующие моменты:
- Сохраняйте данные, которые критичны для аналитики или отчётов.
- Тестируйте функции удаления на тестовом сайте, чтобы избежать потери нужной информации.
- Настраивайте период хранения данных в зависимости от целей сайта.
- Регулярно делайте резервные копии базы данных и проверяйте их целостность.
Таким образом, грамотное управление статистическими данными улучшит скорость работы сайта и облегчит администрирование.