Что такое перемещения (transients) в WooCommerce и зачем их удалять
Перемещения (transients) — это временные кэшированные данные, которые WooCommerce использует для ускорения загрузки страниц, хранения результатов запросов к API, данных о корзине и т.д. Однако при неправильном использовании или после удаления плагинов часть перемещений может остаться в базе данных, занимая место и замедляя сайт.
Удаление неиспользуемых перемещений помогает:
- Снизить нагрузку на базу данных
- Уменьшить размер таблиц wp_options
- Ускорить время отклика сайта
Диагностика: как проверить наличие неиспользуемых перемещений WooCommerce
Для начала нужно проверить, сколько перемещений связано с WooCommerce и есть ли устаревшие или неиспользуемые.
Подключитесь к базе данных через phpMyAdmin или любой SQL-клиент и выполните запрос:
SELECT option_name, option_value FROM wp_options WHERE option_name LIKE '_transient_wc_%' OR option_name LIKE '_transient_timeout_wc_%';Этот запрос покажет все перемещения, связанные с WooCommerce.
Если вы видите много записей с префиксом _transient_wc_, особенно с истекшим временем в _transient_timeout_wc_, значит, в базе скопилось неиспользуемое кэшированное содержимое.
Пошаговое удаление неиспользуемых перемещений WooCommerce
Шаг 1. Создайте резервную копию базы данных
Перед любыми изменениями обязательно создайте резервную копию базы данных, чтобы можно было откатиться в случае ошибки.
Шаг 2. Удаление устаревших перемещений через SQL
Для очистки устаревших перемещений выполните следующий SQL-запрос:
DELETE FROM wp_options WHERE option_name LIKE '_transient_wc_%' AND option_name NOT IN (SELECT option_name FROM wp_options WHERE option_name LIKE '_transient_timeout_wc_%' AND option_value > UNIX_TIMESTAMP());Этот запрос удалит все перемещения, срок действия которых истек.
Шаг 3. Полное удаление всех перемещений WooCommerce (если нужно)
Если хотите полностью очистить все перемещения WooCommerce (например, при отладке или очистке сайта), можно использовать:
DELETE FROM wp_options WHERE option_name LIKE '_transient_wc_%' OR option_name LIKE '_transient_timeout_wc_%';Внимание: это удалит все кэшированные данные WooCommerce, что может привести к временному замедлению сайта при повторном создании кэша.
Шаг 4. Автоматизация очистки через PHP
Для регулярной очистки перемещений можно добавить в файл functions.php вашей темы или создать кастомный плагин следующий код:
function wpclean_delete_expired_wc_transients() {
global $wpdb;
$time = time();
// Удаляем устаревшие перемещения WooCommerce
$wpdb->query(
$wpdb->prepare(
"DELETE option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE %s AND option_name NOT IN (
SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s AND option_value > %d
)",
'_transient_wc_%', '_transient_timeout_wc_%', $time
)
);
}
add_action('wp_scheduled_delete', 'wpclean_delete_expired_wc_transients');Этот код подключается к крону WordPress и удаляет устаревшие перемещения WooCommerce при выполнении регулярной очистки.
Проверка результата после удаления перемещений
После выполнения очистки выполните повторный запрос к базе, чтобы убедиться, что записи удалены:
SELECT COUNT(*) FROM wp_options WHERE option_name LIKE '_transient_wc_%';Если возвращается 0 или количество значительно уменьшилось, значит очистка прошла успешно.
Также проверьте работу сайта и WooCommerce, чтобы убедиться, что функционал не нарушен.
Частые ошибки при удалении перемещений WooCommerce и как их исправить
- Удаление активных перемещений: если удалить перемещения, которые используются в данный момент, может увеличиться время загрузки страниц. Чтобы избежать этого, удаляйте только устаревшие перемещения с помощью фильтра по времени.
- Ошибки в SQL-запросах: неправильные запросы могут повредить базу. Используйте
DELETEс осторожностью и всегда создавайте резервные копии. - Кэширование на уровне сервера: если у вас установлен Redis или Memcached, удаление перемещений из базы может не дать эффекта без очистки серверного кэша.
- Отсутствие прав в базе: убедитесь, что у пользователя базы данных есть права на удаление записей.
Практические советы по оптимизации и безопасности при работе с перемещениями WooCommerce
- Ограничьте срок жизни перемещений — задайте разумное время жизни кэша через фильтр
transient_timeout, чтобы данные не хранились слишком долго. - Используйте WP-CLI для массовой очистки: командой
wp transient delete --allможно быстро удалить все перемещения, включая WooCommerce. - Мониторьте размеры таблицы wp_options — большое количество перемещений увеличивает размер таблицы и замедляет запросы.
- Интеграция с Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=wpclean.ru&utm_medium=article&utm_campaign=kak-udalit-neispolzuemye-peremescheniya-woocommerce) позволяет автоматизировать очистку кэша и перемещений без риска.
Сравнение методов очистки перемещений WooCommerce
| Метод | Сложность | Риски | Преимущества |
|---|---|---|---|
| SQL-запросы вручную | Средняя | Ошибки в запросах, потеря данных | Быстрая и точечная очистка |
| PHP-код в functions.php | Средняя | Ошибки в коде, нагрузка при очистке | Автоматизация, регулярность |
| WP-CLI команда | Высокая (требуется доступ к SSH) | Удаление всех перемещений без фильтров | Моментальная очистка, подходит для больших сайтов |
| Плагин Clearfy Pro | Низкая | Платное решение | Безопасно, удобно, интегрировано с WooCommerce |