Диагностика: зачем удалять просмотры товаров в WooCommerce
В WooCommerce для анализа поведения пользователей часто хранятся данные о просмотренных товарах. Иногда возникает необходимость очистить эти данные для конкретного пользователя — например, при тестировании, очистке истории или по требованиям GDPR. В стандартных настройках WooCommerce такой функции нет. Нужно реализовать это вручную через код.
Где хранятся просмотры товаров в WooCommerce
Данные о просмотрах товаров обычно хранятся в пользовательских метаданных или в куки, если используется плагин, например, WooCommerce Recently Viewed Products. В стандартном WooCommerce история просмотров хранится в куках браузера, но некоторые сайты расширяют функционал и сохраняют данные в базе.
Если ваш сайт хранит просмотры в пользовательских метаданных, то ключ может отличаться, например, _woocommerce_recently_viewed или кастомный ключ вашего плагина.
Пошаговое решение: удаление просмотров товаров по ID пользователя из метаданных
1. Подключение к WordPress и определение ID пользователя
Для начала нужно знать ID пользователя, чьи просмотры надо удалить. Обычно ID передается в функцию или берется из контекста.
function wc_delete_user_viewed_products( $user_id ) {
if ( ! $user_id ) {
return false; // Нет ID пользователя
}
// Дальше идет удаление метаданных
}2. Удаление метаданных с просмотрами
Если данные о просмотрах хранятся в метаданных пользователя, удаляем нужное поле:
function wc_delete_user_viewed_products( $user_id ) {
if ( ! $user_id ) {
return false;
}
$meta_key = '_woocommerce_recently_viewed'; // пример ключа
delete_user_meta( $user_id, $meta_key );
return true;
}3. Проверка и вызов функции
Вызвать функцию можно из любой части сайта, например, из шаблона или через AJAX. Пример:
$user_id = 123; // ID нужного пользователя
$result = wc_delete_user_viewed_products( $user_id );
if ( $result ) {
echo 'Просмотры товаров пользователя удалены.';
} else {
echo 'Ошибка: не указан ID пользователя.';
}Как проверить, что просмотры удалены
- Зайдите в базу данных, таблицу
wp_usermeta, найдите записи сuser_id = Xи ключом_woocommerce_recently_viewed. Их не должно быть. - Если данные хранятся в куках, очистите куки браузера.
- Зайдите под этим пользователем на сайт и проверьте, что история просмотров пуста (например, блок «Просмотренные товары» не отображается).
Частые ошибки и их исправление
- Неверный ID пользователя: функция не сработает без корректного ID. Проверьте, что передаете
intи пользователь существует. - Неправильный ключ метаданных: если не уверены, какой ключ используется, проверьте в базе или в коде плагина/темы.
- Кэширование: если используется кэш (например, object-cache), он может мешать моментальному удалению. Очистите кэш.
- Данные в куках: если история просмотров хранится в куках, серверный код не удалит их. Придется очищать куки клиентом через JS.
Дополнительно: удаление просмотров из куков через JavaScript
Если история просмотров хранится в куках, используйте JS-код для их очистки:
function wc_clear_viewed_products_cookie() {
echo "<script>
document.cookie = 'woocommerce_recently_viewed=; path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC;';
</script>";
}
add_action('wp_footer', 'wc_clear_viewed_products_cookie');Практические советы по безопасности и производительности
- Проверяйте права пользователя при удалении данных, чтобы избежать несанкционированного доступа.
- Удаляйте метаданные только по необходимости, чтобы не создавать лишних операций с базой.
- Если нужно массово очищать просмотры для множества пользователей, делайте это пакетно и с кешированием.
Сравнение подходов к удалению просмотров товаров
| Метод | Плюсы | Минусы |
|---|---|---|
| Удаление метаданных PHP | Прямой доступ к данным, подходит для серверных операций | Требует знания ключа, не удаляет куки |
| Удаление куков JS | Удаляет клиентские данные, простой код | Не влияет на данные в базе, требует загрузки страницы пользователем |
| Плагины управления историей просмотров | Готовый функционал, настройки через UI | Зависимость от плагина, менее гибко |