Метаданные в WordPress — это важная часть хранения дополнительной информации о постах, пользователях, комментариях и других объектах. Однако со временем их количество может разрастаться, особенно если вы часто устанавливаете и удаляете плагины или темы, которые оставляют после себя «мусор» в базе данных. Это негативно влияет на производительность сайта и усложняет бэкапы.
Что такое неиспользуемые метаданные и почему их нужно удалять
Неиспользуемые метаданные — это записи в таблицах wp_postmeta, wp_usermeta и других, которые не связаны с актуальными объектами или не используются в коде сайта. К примеру, если плагин удалён, но его данные остались, они продолжают занимать место и увеличивают нагрузку на базу.
Удаление таких данных позволяет:
- Уменьшить размер базы данных;
- Сократить время выполнения запросов;
- Оптимизировать резервное копирование;
- Повысить общую скорость сайта.
В этой статье рассмотрим практические способы найти и безопасно удалить неиспользуемые метаданные.
Как найти неиспользуемые метаданные в таблице wp_postmeta
Таблица wp_postmeta содержит метаданные для всех типов записей. Чтобы найти метаданные, которые относятся к удалённым или несуществующим постам, можно воспользоваться SQL-запросом:
SELECT * FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;
Этот запрос выбирает все метаданные, для которых нет соответствующего поста. Такие записи можно безопасно удалить.
Удаление выполняется командой:
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;
Перед выполнением обязательно сделайте бэкап базы данных.
Автоматизация очистки с помощью PHP-функции WPAssist
Для удобства можно создать функцию, которая будет запускать очистку из админки или по крону.
function wpassist_clean_unused_postmeta() {
global $wpdb;
$query = "DELETE pm FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON pm.post_id = p.ID
WHERE p.ID IS NULL";
$result = $wpdb->query($query);
return $result;
}
Вы можете вызвать wpassist_clean_unused_postmeta() в нужном месте, например, при активации плагина или через WP Cron.
Поиск и удаление неиспользуемых метаданных пользователей
Аналогично постам, в wp_usermeta могут скапливаться записи для удалённых пользователей. Для их поиска используйте запрос:
SELECT * FROM wp_usermeta um
LEFT JOIN wp_users u ON um.user_id = u.ID
WHERE u.ID IS NULL;
Удаление:
DELETE um FROM wp_usermeta um
LEFT JOIN wp_users u ON um.user_id = u.ID
WHERE u.ID IS NULL;
Для периодической очистки можно написать функцию:
function wpassist_clean_unused_usermeta() {
global $wpdb;
$query = "DELETE um FROM {$wpdb->usermeta} um
LEFT JOIN {$wpdb->users} u ON um.user_id = u.ID
WHERE u.ID IS NULL";
$result = $wpdb->query($query);
return $result;
}
Удаление метаданных от неиспользуемых плагинов и тем
Часто плагины и темы создают собственные метаданные с префиксами или определёнными ключами. Если вы знаете, что определённый плагин удалён, но его данные остались, можно удалить их по ключам.
Например, чтобы удалить все пользовательские метаданные, начинающиеся с quizle_ (плагин Quizle от WPShop), используйте запрос:
DELETE FROM wp_usermeta WHERE meta_key LIKE 'quizle_%';
Или для постметаданных:
DELETE FROM wp_postmeta WHERE meta_key LIKE 'quizle_%';
Перед использованием таких запросов изучите, какие метаданные нужны, а какие нет. Это можно сделать через phpMyAdmin или с помощью плагина Clearfy Pro, который умеет выполнять чистку базы и удалять остаточные данные.
Применение плагина Clearfy Pro для очистки базы метаданных
Clearfy Pro — мощный инструмент для оптимизации WordPress, позволяющий удалять неиспользуемые метаданные, ревизии, спам, транзиенты и многое другое.
После установки и активации:
- Перейдите в раздел оптимизации базы данных;
- Выберите очистку метаданных (постмета, юзермета и т.д.);
- Запустите процесс — плагин сам найдёт и удалит мусор безопасно.
Это особенно удобно для сайтов, где нет возможности вручную выполнять SQL-запросы.
Рекомендации по регулярному обслуживанию метаданных
Чтобы не допускать накопления лишних метаданных, советую:
- Перед удалением плагинов и тем проверять наличие и удалять их данные вручную или с помощью плагинов;
- Настроить регулярное выполнение оптимизации базы с помощью WP Cron и плагинов типа Clearfy Pro;
- Мониторить размер таблиц
wp_postmetaиwp_usermetaв phpMyAdmin; - Использовать кастомные функции, подобные
wpassist_clean_unused_postmeta(), для автоматизации очистки на крупных проектах.
Такой системный подход позволит держать базу данных в порядке и поддерживать скорость сайта на высоком уровне.