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

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

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

В WordPress типы записей — это способ организовать разный контент, отличный от стандартных «Записей» и «Страниц». Например, это могут быть «Портфолио», «Отзывы», «Товары» и т.д. Когда сайт развивается, некоторые типы записей отключаются, но записи остаются в базе и интерфейсе, что мешает удобно работать.

Удаление типа записи — это не просто удаление регистрации через unregister_post_type() (которой в WordPress нет), а комплексное действие: удаление записей, метаданных, таксономий и очистка интерфейса.

Если не убрать неиспользуемые типы, можно получить проблемы:

  • Засорение базы и админки
  • Потенциальные конфликты с плагинами и темами
  • Ошибки и предупреждения в коде

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

Для начала нужно понять, какие именно типы записей устарели. Сделать это можно несколькими способами:

  • Посмотреть в админке на меню и определить записи, которые больше не нужны.
  • Использовать SQL-запрос к базе для вывода всех типов записей:
SELECT DISTINCT post_type FROM wp_posts;

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

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

function wpbest_get_registered_post_types() {
    return get_post_types( [], 'names' );
}

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

Удаление типа записи — это процесс из нескольких этапов:

1. Отключение регистрации типа записи

Нужно убрать или закомментировать код в functions.php или плагине, где регистрируется этот тип записи. Обычно это вызов register_post_type().

Если тип записи регистрируется через плагин, то лучше деактивировать или удалить плагин.

2. Удаление записей этого типа из базы данных

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

Пример функции для удаления записей типа old_type:

function wpbest_delete_old_post_type_records() {
    $args = [
        'post_type' => 'old_type',
        'post_status' => 'any',
        'numberposts' => -1
    ];
    $posts = get_posts( $args );
    foreach( $posts as $post ) {
        wp_delete_post( $post->ID, true );
    }
}
// Запускаем один раз
wpbest_delete_old_post_type_records();

Обратите внимание на второй параметр true в wp_delete_post, чтобы удалять записи без возможности восстановления.

3. Очистка метаданных и таксономий

Записи могут иметь метаданные и термины в таксономиях, которые тоже стоит удалить для полной очистки.

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

4. Удаление меню и ссылок в админке

Если после удаления типа записи в меню остались ссылки, их можно убрать с помощью хука admin_menu. Например:

add_action( 'admin_menu', 'wpbest_remove_old_post_type_menu' );
function wpbest_remove_old_post_type_menu() {
    remove_menu_page( 'edit.php?post_type=old_type' );
}

Полезные плагины для упрощения процесса

Если хотите автоматизировать или упростить работу, можно использовать плагины:

  • WP Bulk Delete — позволяет массово удалять записи по типу, статусу и другим параметрам.
  • Advanced Database Cleaner — помогает очищать базу от лишних данных, включая остатки от удаленных типов записей.

Например, с помощью WP Bulk Delete можно быстро удалить все записи нужного типа.

Пример комплексной функции для удаления неиспользуемого типа записи

Соберем все вышеописанные действия в одну функцию, которую можно запускать один раз.

function wpbest_remove_custom_post_type_completely( $post_type ) {
    // Удаляем все записи
    $posts = get_posts([
        'post_type' => $post_type,
        'post_status' => 'any',
        'numberposts' => -1
    ]);
    foreach( $posts as $post ) {
        wp_delete_post( $post->ID, true );
    }
    // Удаляем меню из админки
    add_action('admin_menu', function() use ($post_type) {
        remove_menu_page( 'edit.php?post_type=' . $post_type );
    });
}
// Пример вызова
wpbest_remove_custom_post_type_completely('old_type');

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

Заключение

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

Как удалить неиспользуемые типы записей в WordPress
29.12.2025
Как использовать REST API в WordPress для создания настраиваемых приложений
23.11.2025
Оптимизация кэширования в WordPress для ускорения сайта
02.12.2025
Двойная авторизация в WordPress: реализация без плагинов
13.12.2025
Как создать отслеживание пользовательских действий в WordPress с помощью AJAX и REST API
10.01.2026