В процессе работы с WordPress накапливаются категории, которые остаются пустыми — без записей. Такие категории засоряют структуру сайта, ухудшают навигацию и могут негативно влиять на SEO. В этой статье разберём, как удалить пустые категории в WordPress с помощью SQL-запросов, кода на PHP и через популярные плагины.
Почему важно удалять пустые категории в WordPress
Пустые категории — это категории, в которых нет ни одной записи. Они могут появиться при удалении записей, изменении структуры сайта или при неправильном использовании таксономий. Удаление пустых категорий помогает:
- Упростить панель управления и структуру категорий;
- Избавиться от лишних URL, которые могут создавать дубли страниц;
- Улучшить SEO, так как поисковые системы не индексируют пустые страницы;
- Сделать меню сайта и навигацию более логичными и понятными для пользователей.
Как найти пустые категории в базе данных
Прежде чем удалить пустые категории, полезно получить список таких категорий. Вот пример SQL-запроса, который можно выполнить в phpMyAdmin или другом инструменте для работы с базой данных MySQL:
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;
Этот запрос вернёт ID, название и количество записей в каждой категории, где количество равно нулю, то есть пустые категории.
Удаление пустых категорий через SQL-запрос
После того как вы проверили список пустых категорий, можно удалить их напрямую через SQL. Для этого сначала удалим записи из таблицы wp_term_taxonomy, а затем из wp_terms. Важно делать резервную копию базы данных перед выполнением таких операций.
DELETE tt, t
FROM wp_term_taxonomy AS tt
INNER JOIN wp_terms AS t ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'category' AND tt.count = 0;
Этот запрос удалит все пустые категории из базы данных. Однако рекомендуется использовать программные методы для более безопасного и корректного удаления.
Удаление пустых категорий с помощью PHP-функции
Для автоматизации удаления пустых категорий в WordPress можно написать функцию, которая будет запускаться вручную или через крон-задачу. Ниже пример функции wptemy_delete_empty_categories(), которая удаляет все категории без записей.
function wptemy_delete_empty_categories() {
$empty_cats = get_categories(array(
'hide_empty' => true,
'fields' => 'ids',
));
// Получаем все категории
$all_cats = get_categories(array(
'hide_empty' => false,
'fields' => 'ids',
));
// Вычисляем пустые категории
$empty_cats = array_diff($all_cats, $empty_cats);
foreach ($empty_cats as $cat_id) {
wp_delete_category($cat_id);
}
}
Эту функцию можно вызвать в админке через action или добавить в плагин. Она безопасно удаляет категории, используя встроенную функцию wp_delete_category(), которая учитывает все зависимости.
Вызов функции вручную
Чтобы вызвать функцию, добавьте временно следующий код в файл functions.php вашей темы и обновите любую страницу в админке:
add_action('admin_init', 'wptemy_delete_empty_categories');
После выполнения удалите этот код, чтобы функция не запускалась постоянно.
Использование плагинов для удаления пустых категорий
Если вы предпочитаете не работать с кодом, можно воспользоваться плагинами, которые помогают управлять категориями:
- Term Management Tools — позволяет объединять, удалять и переименовывать категории, включая пустые;
- WP Bulk Delete — мощный плагин для массового удаления постов, категорий и тегов по различным условиям;
- Clearfy Pro — оптимизационный плагин с функциями очистки и управления таксономиями, который доступен на wpshop.ru.
Плагины обеспечивают удобный интерфейс и минимизируют риск случайного удаления нужных данных.
Как предотвратить появление пустых категорий в будущем
Чтобы минимизировать появление пустых категорий, придерживайтесь следующих правил:
- Перед удалением записей переносите их в другую категорию, если они важны;
- Регулярно проверяйте структуру категорий с помощью плагинов или собственного кода;
- Используйте фильтры и хуки, чтобы не создавать категории автоматически без контента;
- При импорте контента корректно сопоставляйте записи с существующими категориями.
Выводы и рекомендации
Удаление пустых категорий — необходимая задача для поддержания чистоты и оптимизации сайта на WordPress. Используйте SQL-запросы только если уверены в своих действиях и всегда делайте резервные копии. Лучший способ — написать функцию на PHP или использовать проверенные плагины. Также не забывайте регулярно проверять структуру категорий и следить, чтобы они всегда содержали актуальный контент.