Пустые категории в WordPress — это категории, к которым не привязаны записи. Они часто появляются после удаления записей или неаккуратного управления таксономиями. Такие категории не несут пользы и могут замусоривать базу данных, а также влиять на навигацию и SEO сайта. В этой статье мы разберём, как безопасно и эффективно удалить пустые категории напрямую из базы данных, а также покажем примеры кода для автоматизации процесса.
Почему важно удалять пустые категории
Пустые категории могут негативно влиять на работу сайта несколькими способами:
- Засоряют административную панель, усложняя навигацию.
- Могут создавать пустые страницы категории с низкой ценностью для поисковых систем.
- Увеличивают размер базы данных, что потенциально влияет на скорость работы сайта.
Регулярная очистка категорий помогает поддерживать порядок и улучшать SEO-показатели.
Как определить пустые категории в WordPress
Категория считается пустой, если в ней нет записей, то есть количество связанных постов равно нулю. Для проверки можно использовать SQL-запрос, который покажет все категории с нулевым числом записей:
SELECT t.term_id, t.name, tt.count
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category' AND tt.count = 0;
Здесь wp_terms — таблица с терминами (названиями категорий), wp_term_taxonomy — таблица с таксономиями и связями, а count — поле, показывающее количество привязанных записей.
Удаление пустых категорий через SQL-запрос
Удаление категорий требует удаления записей из обеих таблиц: wp_term_taxonomy и wp_terms. Важно соблюдать порядок и быть уверенным, что удаляются только пустые категории.
Пример запроса для удаления пустых категорий:
DELETE t, tt
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category' AND tt.count = 0;
Этот запрос удалит одновременно записи из обеих таблиц.
Внимание! Перед выполнением любых операций с базой данных обязательно сделайте резервную копию.
Автоматизация удаления пустых категорий с помощью PHP-функции в WordPress
Если вы хотите регулярно очищать пустые категории, лучше сделать это программно, используя функцию на PHP. Ниже приведён пример функции wpbook_delete_empty_categories(), которую можно добавить в файл functions.php вашей темы или в отдельный плагин.
function wpbook_delete_empty_categories() {
global $wpdb;
$query = "SELECT t.term_id
FROM {$wpdb->terms} AS t
INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category' AND tt.count = 0";
$empty_cats = $wpdb->get_col($query);
if (!empty($empty_cats)) {
foreach ($empty_cats as $term_id) {
wp_delete_term($term_id, 'category');
}
}
}
Функция получает список всех пустых категорий и удаляет их через стандартную функцию WordPress wp_delete_term(), что позволяет корректно удалить все связи и избежать повреждений базы данных.
Как запустить функцию вручную или по расписанию
Для однократного запуска можно вызвать функцию в административной части или прямо из кода:
add_action('admin_init', 'wpbook_delete_empty_categories');
Для регулярного автоматического удаления пустых категорий можно использовать WP-Cron:
if (!wp_next_scheduled('wpbook_cron_delete_empty_categories')) {
wp_schedule_event(time(), 'daily', 'wpbook_cron_delete_empty_categories');
}
add_action('wpbook_cron_delete_empty_categories', 'wpbook_delete_empty_categories');
Этот код настроит ежедневный запуск функции, что поможет поддерживать базу данных в чистоте без вашего участия.
Использование плагинов для управления категориями и очистки базы
Если вы предпочитаете визуальные инструменты, можно использовать плагины, которые помогут найти и удалить пустые категории и другие ненужные таксономии:
- Clearfy Pro — плагин оптимизации, который включает функции очистки базы данных, в том числе удаление пустых категорий. Подробнее на wpshop.ru.
- WP Sweep — бесплатный плагин для очистки базы данных, включая удаление пустых терминов таксономий.
Использование плагинов удобно для тех, кто не хочет работать с кодом напрямую, однако важно доверять только проверенным инструментам.
Рекомендации по безопасности и производительности
При работе с базой данных и удалением записей важно соблюдать следующие меры предосторожности:
- Всегда делайте резервное копирование базы данных перед выполнением операций удаления.
- Проверяйте запросы на тестовом сайте или локальной копии перед применением на боевом ресурсе.
- Используйте встроенные функции WordPress для удаления терминов, чтобы не нарушить целостность данных.
- Не запускайте тяжелые запросы на пиковых нагрузках сайта, чтобы не замедлить работу сервера.
Выводы
Удаление пустых категорий — важная задача для поддержания чистоты и оптимизации WordPress-сайта. Используя SQL-запросы и встроенные функции WordPress, можно быстро найти и безопасно удалить такие категории. Для регулярной очистки удобно автоматизировать процесс с помощью WP-Cron и PHP-функций. При необходимости используйте проверенные плагины, такие как Clearfy Pro, которые добавляют удобные инструменты для управления базой данных.
Если вы хотите попробовать Clearfy Pro для оптимизации своего сайта, переходите по ссылке: https://wpshop.ru/plugins/clearfy-pro/