wpclean.ru wordpress WPClean.ru

Как удалить неиспользуемые мета данные в WordPress для оптимизации базы данных

Оптимизация базы данных — одна из ключевых задач для поддержания высокой производительности сайта на WordPress. Помимо удаления ревизий, спама и кэша, стоит обратить внимание на неиспользуемые мета данные, которые скапливаются в таблицах wp_postmeta и wp_usermeta. Они могут сильно раздувать базу и замедлять запросы.

Что такое мета данные в WordPress и почему они накапливаются

Мета данные — это дополнительные данные, которые хранятся для постов, пользователей, терминов и других объектов WordPress. Например, для поста это может быть информация о шаблоне, пользовательские поля плагинов, настройки плагинов SEO и т.д. Со временем, особенно при тестировании плагинов или тем, в базе накапливаются «мусорные» мета ключи, которые уже не используются, но остаются в таблице.

Это приводит к увеличению размера таблиц и замедлению запросов, особенно если на сайте много записей. Поэтому регулярная очистка неиспользуемых мета данных — важная часть технической оптимизации.

Инструменты и плагины для поиска и удаления неиспользуемых мета данных

Существует несколько плагинов, которые помогут выявить и удалить ненужные мета данные:

  • Advanced Database Cleaner — мощный инструмент для анализа и очистки базы. Позволяет находить неиспользуемые мета данные и удалять их безопасно.
  • WP-Optimize — кроме очистки ревизий и кэша, может помочь с оптимизацией таблиц и удалением мусора.
  • Plugins Garbage Collector — сканирует базу на предмет остатков от удалённых плагинов, включая мета данные.

Эти плагины проводят сканирование и показывают, какие мета ключи не используются в текущей активной базе. Однако стоит проявлять осторожность и делать резервные копии перед массовым удалением.

Ручное удаление неиспользуемых мета данных с помощью SQL-запросов

Если вы уверены в своих знаниях, можете выполнить очистку напрямую через SQL. Сначала нужно выявить мета ключи, которые не связаны ни с одним постом или пользователем.

Пример запроса для поиска неиспользуемых postmeta ключей (те, что не связаны с постами):

SELECT meta_key, COUNT(*) as count FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL
GROUP BY meta_key
ORDER BY count DESC;

Этот запрос покажет мета ключи, которые ссылаются на несуществующие посты. Их можно удалить с помощью следующего запроса:

DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;

Аналогично для wp_usermeta:

SELECT meta_key, COUNT(*) as count FROM wp_usermeta um
LEFT JOIN wp_users u ON um.user_id = u.ID
WHERE u.ID IS NULL
GROUP BY meta_key
ORDER BY count DESC;
DELETE um FROM wp_usermeta um
LEFT JOIN wp_users u ON um.user_id = u.ID
WHERE u.ID IS NULL;

Эти запросы удаляют мета данные, привязанные к удалённым постам и пользователям. Это помогает избежать накопления «мусора» после удаления контента.

Создание функции для регулярной очистки неиспользуемых мета данных в WordPress (WPClean)

Для автоматизации процесса можно написать функцию, которую подключить в файл functions.php вашей темы или в собственный плагин. Пример функции с префиксом wpclean_:

function wpclean_delete_orphan_postmeta() {
    global $wpdb;
    $deleted = $wpdb->query(
        "DELETE pm FROM {$wpdb->postmeta} pm
        LEFT JOIN {$wpdb->posts} p ON pm.post_id = p.ID
        WHERE p.ID IS NULL"
    );
    return $deleted;
}

function wpclean_delete_orphan_usermeta() {
    global $wpdb;
    $deleted = $wpdb->query(
        "DELETE um FROM {$wpdb->usermeta} um
        LEFT JOIN {$wpdb->users} u ON um.user_id = u.ID
        WHERE u.ID IS NULL"
    );
    return $deleted;
}

Вы можете запускать эти функции вручную или добавить их в крон-задачи WordPress для регулярной очистки. Например, запускать раз в неделю, чтобы база всегда оставалась «чистой».

Регистрация крон-задачи для автоматической очистки

Добавьте следующий код в functions.php для запуска очистки по расписанию:

if (!wp_next_scheduled('wpclean_weekly_cleanup')) {
    wp_schedule_event(time(), 'weekly', 'wpclean_weekly_cleanup');
}

add_action('wpclean_weekly_cleanup', function() {
    wpclean_delete_orphan_postmeta();
    wpclean_delete_orphan_usermeta();
});

Так вы автоматизируете процесс и снизите нагрузку на базу без вашего постоянного участия.

Как избежать накопления неиспользуемых мета данных в будущем

Чтобы не сталкиваться с проблемой регулярно, придерживайтесь нескольких правил:

  • Перед установкой плагина изучайте его репутацию и отзывы — чем меньше «мусорных» плагинов, тем чище база.
  • После удаления плагина проверяйте, остались ли мета данные, и удаляйте их вручную или с помощью плагинов.
  • Используйте кастомные поля и мета аккуратно, избегайте избыточности.
  • Регулярно проводите аудит базы данных с помощью инструментов оптимизации.

Заключение

Удаление неиспользуемых мета данных — важный шаг в оптимизации WordPress. Это помогает уменьшить размер базы, ускорить запросы и повысить общую производительность сайта. Используйте плагины для удобства, а при желании автоматизируйте процесс с помощью кастомных функций и крон-задач. Не забывайте делать резервные копии перед изменениями в базе, чтобы избежать потери данных.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙