wp-code.ru wordpress WP-Codе

Как удалить неиспользуемые мета данные в WordPress с помощью кода

В процессе работы с WordPress накапливаются мета данные (custom fields), которые со временем могут стать неактуальными или неиспользуемыми. Это замедляет работу сайта и увеличивает размер базы данных. В этой статье разберём, как эффективно находить и удалять такие мета данные с помощью собственного PHP-кода без использования тяжёлых плагинов.

Что такое мета данные в WordPress и почему их нужно чистить

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

Со временем в базе данных накапливаются устаревшие или неиспользуемые мета данные, особенно после удаления плагинов или тем, которые оставляют свои записи. Это приводит к разрастанию таблиц wp_postmeta и wp_usermeta, что негативно сказывается на производительности сайта.

Очистка неиспользуемых мета данных помогает уменьшить размер базы, сократить время запросов и ускорить загрузку страниц.

Как определить неиспользуемые мета данные в WordPress

Определить, какие мета данные не используются, непросто, поскольку WordPress не хранит метаданные в строго структурированном виде. Но можно использовать несколько подходов:

  • Анализ требований плагинов и тем: если плагин удалён, а его мета данные остались, их можно считать неиспользуемыми.
  • Проверка популярных ключей мета данных: часто встречающиеся ключи, которые не используются на сайте, можно удалить.
  • Логирование использования мета данных: с помощью кода можно отслеживать, какие мета данные действительно читаются.

Для большинства сайтов безопасно удалять мета данные, связанные с удалёнными плагинами и темами.

Удаление неиспользуемых мета данных с помощью PHP-кода

Рассмотрим пример функции, которая удаляет все мета данные с заданным ключом. Её можно адаптировать под ваши нужды, вызывая для каждого неиспользуемого ключа.

function wp_code_remove_postmeta_by_key($meta_key) {
    global $wpdb;
    $meta_key_esc = esc_sql($meta_key);
    $table = $wpdb->postmeta;
    $sql = "DELETE FROM $table WHERE meta_key = '$meta_key_esc'";
    $deleted = $wpdb->query($sql);
    return $deleted !== false ? $deleted : 0;
}

// Пример использования:
$deleted_count = wp_code_remove_postmeta_by_key('_old_plugin_setting');
echo "Удалено мета данных с ключом _old_plugin_setting: $deleted_count";

Эта функция удаляет все записи из таблицы wp_postmeta с указанным ключом. Аналогично можно сделать для wp_usermeta, заменив таблицу.

Удаление нескольких ключей мета данных за раз

Если у вас есть список ключей для удаления, можно выполнить удаление в цикле:

$keys_to_delete = ['_old_plugin_setting', '_unused_custom_field', '_temp_data'];
foreach ($keys_to_delete as $key) {
    $count = wp_code_remove_postmeta_by_key($key);
    echo "Удалено $count записей с ключом $key<br>";
}

Автоматизация очистки мета данных: пример WP-CLI команды

Для удобства можно создать WP-CLI команду, чтобы запускать очистку из терминала. Ниже пример базовой реализации:

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wpcode clean-meta', function($args, $assoc_args) {
        global $wpdb;
        $keys = isset($assoc_args['keys']) ? explode(',', $assoc_args['keys']) : [];
        if (empty($keys)) {
            WP_CLI::error('Укажите ключи мета данных для удаления через параметр --keys');
        }
        foreach ($keys as $key) {
            $key = trim($key);
            $deleted = wp_code_remove_postmeta_by_key($key);
            WP_CLI::log("Удалено $deleted записей с ключом $key");
        }
    });
}

Запуск из консоли будет выглядеть так:

wp wpcode clean-meta --keys=_old_plugin_setting,_temp_data

Дополнительные советы по работе с мета данными

Помимо удаления неиспользуемых мета данных, важно регулярно оптимизировать таблицы базы данных, чтобы уменьшить фрагментацию:

  • Используйте запрос OPTIMIZE TABLE wp_postmeta; для очистки и дефрагментации таблицы.
  • Рассмотрите возможность использования плагинов типа Clearfy Pro для автоматической оптимизации базы.
  • Регулярно проводите аудит плагинов и тем, чтобы удалять ненужные.

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

Перед удалением на рабочем сайте рекомендуется делать резервные копии базы данных. Также можно сначала просмотреть количество записей с ключом, чтобы понять масштаб:

function wp_code_count_postmeta_by_key($meta_key) {
    global $wpdb;
    $meta_key_esc = esc_sql($meta_key);
    $table = $wpdb->postmeta;
    return (int) $wpdb->get_var("SELECT COUNT(*) FROM $table WHERE meta_key = '$meta_key_esc'");
}

$count = wp_code_count_postmeta_by_key('_old_plugin_setting');
echo "Найдено записей с ключом _old_plugin_setting: $count";

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

Заключение

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше