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

Со временем в проекте WordPress накапливается множество устаревших фрагментов кода: старые функции, неактивные шорткоды, забытые кастомные типы записей и неиспользуемые мета-поля. Это негативно влияет на производительность сайта и усложняет поддержку. В этой статье разберём, как автоматизировать процесс удаления такого кода и очистки базы данных, чтобы поддерживать проект чистым и оптимизированным.

Почему важно удалять старый и неиспользуемый код в WordPress

С течением времени проект растёт, и разработчики добавляют новые функции, плагины и темы. Однако не всегда происходит своевременное удаление устаревших элементов. Это приводит к:

  • Замедлению работы сайта из-за лишних запросов и обработок.
  • Увеличению размера базы данных и её фрагментации.
  • Усложнению поддержки кода и рискам появления багов.

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

Общие категории старого кода, подлежащие удалению

Чаще всего в WordPress остаются следующие элементы, которые можно и нужно удалять:

  • Неиспользуемые шорткоды. Остатки от отключённых плагинов или устаревших функций.
  • Старые кастомные типы записей (CPT), таксономии и мета-поля. Если они перестали использоваться, лучше их удалить из кода и очистить данные.
  • Устаревшие функции и хуки. Функции, которые больше не вызываются, но остаются в файлах.
  • Забытые опции в таблице wp_options. Старые настройки, которые не используются.
  • Неактивный код в functions.php и плагинах.

Автоматизация удаления неиспользуемых шорткодов и функций

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

Для автоматической деактивации и удаления шорткодов можно использовать следующий подход:

function wpengine_unregister_old_shortcodes() {
    $old_shortcodes = array('old_shortcode1', 'old_shortcode2');
    foreach ($old_shortcodes as $shortcode) {
        remove_shortcode($shortcode);
    }
}
add_action('init', 'wpengine_unregister_old_shortcodes');

Этот код отключит шорткоды, после чего можно удалить записи с ними, например, в post_content через SQL-запрос или WP_Query.

Пример удаления записей с неиспользуемыми шорткодами

Чтобы очистить записи с устаревшими шорткодами, можно использовать WP_Query и wp_update_post:

function wpengine_remove_old_shortcode_from_posts() {
    $shortcode = 'old_shortcode1';
    $args = array(
        's' => '[' . $shortcode,
        'post_type' => 'any',
        'posts_per_page' => -1
    );
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $content = get_the_content();
            $new_content = preg_replace('/\[' . preg_quote($shortcode, '/') . '[^\]]*\]/', '', $content);
            wp_update_post(array(
                'ID' => get_the_ID(),
                'post_content' => $new_content
            ));
        }
        wp_reset_postdata();
    }
}
add_action('init', 'wpengine_remove_old_shortcode_from_posts');

После отладки вызов функции можно запускать по cron или вручную для очистки.

Удаление устаревших опций и мета-полей из базы данных

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

Пример удаления опций:

function wpengine_delete_old_options() {
    $old_options = array('old_plugin_option1', 'old_plugin_option2');
    foreach ($old_options as $option) {
        delete_option($option);
    }
}
add_action('admin_init', 'wpengine_delete_old_options');

Для мета-полей (post_meta) можно использовать WP_Query с мета-запросами или прямые SQL-запросы для удаления по ключу.

Автоматизация очистки с помощью плагинов

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

  • Clearfy — плагин для оптимизации и очистки сайта, умеет удалять ревизии, неиспользуемые таксономии и мета-поля.
  • Asset CleanUp — помогает отключать неиспользуемые скрипты и стили, снижая нагрузку.
  • WP-Optimize — позволяет чистить базу данных, удалять старые данные и оптимизировать таблицы.

Использование таких плагинов совместно с кастомным кодом даёт лучший результат.

Удаление старых кастомных типов записей и таксономий

Если в проекте остались неиспользуемые CPT или таксономии, нужно не только убрать их регистрацию из кода, но и очистить соответствующие записи и термины.

Для удаления записей CPT используйте WP_Query с параметром post_type, а затем функцию wp_delete_post():

function wpengine_delete_old_cpt() {
    $old_cpt = 'old_cpt_name';
    $posts = get_posts(array(
        'post_type' => $old_cpt,
        'numberposts' => -1,
        'post_status' => 'any'
    ));
    foreach ($posts as $post) {
        wp_delete_post($post->ID, true);
    }
}
add_action('admin_init', 'wpengine_delete_old_cpt');

Для удаления таксономий используйте функции WordPress для удаления терминов и самих таксономий, предварительно убедившись, что они не используются.

Как планировать автоматическую очистку и мониторинг

Для регулярной очистки старого кода можно настроить задачи с помощью WP-Cron или использовать системные cron задачи на хостинге. Пример настройки WP-Cron для периодического запуска функции удаления:

if (!wp_next_scheduled('wpengine_cleanup_old_code_hook')) {
    wp_schedule_event(time(), 'daily', 'wpengine_cleanup_old_code_hook');
}
add_action('wpengine_cleanup_old_code_hook', 'wpengine_remove_old_shortcode_from_posts');

Аналогично можно добавить вызовы других функций очистки.

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

Рекомендации по безопасности и резервному копированию

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

Для бэкапов можно использовать плагины, например WPengine Backup или внешние сервисы.

Также ограничьте выполнение очистки правами администратора и тщательно тестируйте функции на тестовом сайте.

Итоговые советы и примеры полезных функций

Автоматизация очистки старого и неиспользуемого кода в WordPress — это комплексный процесс, включающий:

  • Анализ и выявление устаревших элементов в коде и базе.
  • Создание кастомных функций для удаления данных и деактивации функций.
  • Использование проверенных плагинов для оптимизации и очистки.
  • Настройка планировщика задач для регулярного запуска очистки.
  • Обеспечение безопасности и резервное копирование.

Вот пример функции для удаления опций с логированием:

function wpengine_delete_options_with_log($options) {
    foreach ($options as $option) {
        if (get_option($option) !== false) {
            delete_option($option);
            error_log("[WPengine] Option deleted: " . $option);
        }
    }
}

Используйте подобный подход и комбинируйте с примерами из статьи для поддержания чистоты и производительности вашего WordPress сайта.

WooCommerce: как автоматически удалять товары без заказов
31.05.2026
Автоматическое создание купонов в WooCommerce по условиям заказов
04.06.2026
Оптимизация изображений в WordPress на WPengine: практические советы и примеры кода
01.03.2026
Как автоматизировать удаление старого и неиспользуемого кода в WordPress
25.02.2026
Как автоматизировать удаление спама в комментариях WordPress
11.12.2025