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

В процессе развития сайта на WordPress часто накапливаются пользовательские типы записей (custom post types), которые больше не используются. Они занимают место в базе данных, замедляют работу административной панели и усложняют поддержку. В этой статье мы подробно рассмотрим, как безопасно удалить неиспользуемые типы постов, сохранив при этом целостность данных и не нарушив работу сайта.

Что такое пользовательские типы постов и почему их стоит удалять

WordPress по умолчанию использует несколько типов записей, например, posts (записи), pages (страницы), attachments (медиафайлы). Пользовательские типы постов создаются для расширения функционала сайта: портфолио, продукты, события и т.д. Когда проект развивается или меняется, некоторые CPT становятся ненужными.

Удаление неиспользуемых типов постов поможет:

  • Уменьшить размер базы данных;
  • Ускорить загрузку админки;
  • Избавиться от мусора и потенциальных уязвимостей;
  • Упростить управление контентом.

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

Как определить, какие типы постов не используются

Чтобы понять, какие CPT не используются, можно:

  • Посмотреть список типов постов через админку или плагин Post Types Order;
  • Проверить наличие записей с помощью SQL-запроса:
    SELECT post_type, COUNT(ID) FROM wp_posts GROUP BY post_type;
    Это покажет, сколько записей каждого типа есть в базе;
  • Провести аудит кода темы и плагинов на использование CPT.

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

Удаление регистрации типа поста из кода

Чтобы WordPress больше не регистрировал тип поста, нужно удалить или закомментировать функцию register_post_type в файлах темы или плагина. Например, если CPT 'portfolio' регистрируется так:

function wpcontent_register_portfolio() {
    register_post_type('portfolio', [
        'labels' => [
            'name' => 'Портфолио',
            'singular_name' => 'Портфолио'
        ],
        'public' => true,
        'has_archive' => true,
    ]);
}
add_action('init', 'wpcontent_register_portfolio');

То нужно удалить или закомментировать этот код. После этого WordPress перестанет показывать CPT и создавать для него URL.

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

Удаление регистрации CPT не удаляет записи из базы данных. Чтобы их удалить, можно воспользоваться SQL-запросом:

DELETE FROM wp_posts WHERE post_type = 'portfolio';

Если у этого типа есть пользовательские таксономии, их также стоит очистить:

DELETE FROM wp_term_relationships WHERE object_id IN (
    SELECT ID FROM wp_posts WHERE post_type = 'portfolio'
);

Также можно удалить сами термины, если они используются только для этого CPT.

Пример функции для безопасного удаления CPT с префиксом wpcontent

function wpcontent_delete_cpt_data($post_type) {
    global $wpdb;

    // Проверяем, что CPT существует
    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_type = %s",
        $post_type
    ));

    if ($count > 0) {
        // Удаляем связи с таксономиями
        $post_ids = $wpdb->get_col($wpdb->prepare(
            "SELECT ID FROM {$wpdb->posts} WHERE post_type = %s",
            $post_type
        ));
        foreach ($post_ids as $post_id) {
            $wpdb->delete($wpdb->term_relationships, ['object_id' => $post_id]);
        }

        // Удаляем записи
        $wpdb->query($wpdb->prepare(
            "DELETE FROM {$wpdb->posts} WHERE post_type = %s",
            $post_type
        ));
    }
}

// Использование
wpcontent_delete_cpt_data('portfolio');

Эта функция удалит все записи и связи таксономий для CPT 'portfolio'. Перед выполнением рекомендую сделать полный бэкап базы.

Автоматизация удаления CPT с помощью плагина Clearfy Pro

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

В Clearfy Pro можно перейти в раздел оптимизации, выбрать ненужные CPT и автоматически удалить записи и метаданные, сохранив безопасность сайта. Такой подход подойдет администраторам без глубоких технических знаний.

Как избежать потерь и ошибок при удалении CPT

Удаляя тип поста, обратите внимание на следующее:

  • Сделайте полный бэкап базы данных и файлов сайта;
  • Проверьте, не используется ли CPT в шаблонах темы, виджетах, меню и плагинах;
  • Удаляйте записи и таксономии только после отключения регистрации CPT;
  • Проверяйте сайт после удаления на наличие ошибок 404 и сломанных ссылок;
  • Используйте плагины с возможностью восстановления данных, если это возможно.

Выводы

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

Как автоматически отключать неиспользуемые плагины в WordPress
10.03.2026
Создать собственный shortcode WordPress: подробное руководство
12.11.2025
Как автоматически удалять неактивных пользователей в WordPress
08.02.2026
Решение проблемы с неработающим фильтром товаров WooCommerce по атрибутам
05.05.2026
Как создать уникальный виджет в WordPress с поддержкой AJAX
09.01.2026