В процессе развития сайта на 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, которые автоматизируют эту работу.