В процессе разработки или доработки сайта на WordPress часто возникает необходимость убрать лишние или неиспользуемые типы записей (post types). Это помогает оптимизировать админ-панель, уменьшить нагрузку на систему и сделать интерфейс более понятным для пользователя. В этой статье мы подробно разберем, как безопасно и эффективно удалить неиспользуемые типы записей в WordPress, включая примеры кода и рекомендации по плагинам.
Что такое типы записей в WordPress и зачем их удалять
Типы записей (post types) — это структуры, которые определяют разные виды контента на сайте: стандартные записи (posts), страницы (pages), а также пользовательские типы записей (custom post types), созданные плагинами или темами. Иногда после удаления плагина или смены темы в системе остаются типы записей, которые больше не нужны.
Оставлять их без изменений не стоит по нескольким причинам:
- Админ-панель загромождается ненужными разделами;
- База данных содержит данные, которые не используются и занимают место;
- Возможны конфликты при дальнейшей разработке;
- Оптимизация скорости загрузки и безопасности.
Удаление неиспользуемых типов записей позволит сделать сайт чище и быстрее.
Какие типы записей можно удалять и что важно учитывать
Важно понимать, что нельзя просто удалить системные типы записей WordPress, такие как post и page. Их удаление приведет к серьезным сбоям. Удалять можно только кастомные типы записей, которые созданы темами или плагинами, и которые не используются.
Перед удалением обязательно проверьте:
- Нет ли активных записей этого типа, которые нужно сохранить;
- Не зависит ли от этого типа функционал сайта;
- Нет ли ссылок на записи этого типа в меню, виджетах, настройках.
Резервное копирование базы данных — обязательный шаг перед любыми действиями.
Способы удаления неиспользуемых типов записей
Удаление через отключение регистрации типа записи
Самый простой способ — перестать регистрировать ненужный тип записи. Обычно регистрация происходит в файле темы или плагина через функцию register_post_type(). Если вы удалите или закомментируете этот код, тип записи перестанет отображаться в админке, но данные останутся в базе.
Пример отключения регистрации типа записи wp_shablon_oldtype:
function wp_shablon_unregister_old_post_type() {
unregister_post_type('wp_shablon_oldtype');
}
add_action('init', 'wp_shablon_unregister_old_post_type', 100);Однако функция unregister_post_type() работает не во всех версиях WordPress и может быть неэффективна. Поэтому часто просто удаляют регистрацию типа записи из кода.
Удаление записей и данных из базы данных
Если вы хотите полностью очистить базу от записей указанного типа, можно воспользоваться SQL-запросом или написать скрипт для удаления.
Пример SQL-запроса для удаления всех записей типа wp_shablon_oldtype:
DELETE FROM wp_posts WHERE post_type = 'wp_shablon_oldtype';После удаления записей стоит очистить связанные метаданные:
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;Подобные операции нужно выполнять осторожно и только при наличии бэкапа.
Удаление типов записей через плагины
Если не хотите работать с кодом, можно воспользоваться плагинами, которые управляют типами записей и удаляют их вместе с данными.
Рекомендуемые плагины:
- Custom Post Type UI — позволяет деактивировать регистрацию типов, но не удаляет данные;
- WP Bulk Delete — удаляет записи по типу, статусу, меткам;
- Advanced Database Cleaner — помогает очистить базу от ненужных записей и метаданных.
Для удаления типа записи через WP Bulk Delete:
- Установите и активируйте плагин;
- Перейдите в раздел Bulk Delete → Posts;
- Выберите тип записи и задайте условия удаления;
- Запустите удаление.
Практическое решение: удаление кастомного типа записи «portfolio»
Предположим, у вас есть тип записи portfolio, который больше не нужен. Вот подробный план действий:
1. Отключаем регистрацию типа записи
Если тип регистрируется в функции темы или плагина, закомментируйте или удалите код:
register_post_type('portfolio', [
'labels' => [...],
'public' => true,
'supports' => ['title', 'editor', 'thumbnail'],
]);2. Удаляем записи типа «portfolio» из базы
Добавьте следующий PHP-скрипт в файл functions.php темы или создайте отдельный плагин для удаления:
function wp_shablon_delete_portfolio_posts() {
if (!current_user_can('administrator')) {
return;
}
$args = [
'post_type' => 'portfolio',
'posts_per_page' => -1,
'post_status' => 'any',
'fields' => 'ids',
];
$posts = get_posts($args);
foreach ($posts as $post_id) {
wp_delete_post($post_id, true);
}
}
add_action('admin_init', 'wp_shablon_delete_portfolio_posts');После запуска и удаления убедитесь, что записи удалены, затем удалите этот код.
3. Очистка метаданных и таксономий
Если для типа записи были свои таксономии или метаданные, их тоже стоит удалить, чтобы не оставлять мусор.
global $wpdb;
$wpdb->query("DELETE pm FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL");Советы по оптимизации и безопасности
Всегда работайте на тестовом сайте или создавайте резервные копии перед удалением типов записей и данных.
Используйте плагины для упрощения процесса, если не уверены в работе с кодом.
Для комплексного управления типами записей и оптимизации базы данных можно рассмотреть плагин Clearfy Pro, который помогает безопасно отключать и очищать ненужные типы записей и метаданные.
Итог
Удаление неиспользуемых типов записей в WordPress — важный этап оптимизации сайта. Правильный подход включает отключение регистрации, удаление записей и связанных данных, а также использование специализированных плагинов для безопасности и удобства. Следуя рекомендациям из этой статьи, вы сможете сделать админ-панель и базу данных вашего сайта чище и эффективнее.