В процессе работы с WordPress накапливается множество категорий, которые остаются пустыми — без опубликованных записей. Такие категории не только создают беспорядок в админпанели, но и могут негативно влиять на SEO и удобство пользователя. В этой статье мы подробно рассмотрим, как найти и удалить пустые категории в WordPress с помощью PHP-кода и полезных плагинов.
Почему важно удалять пустые категории в WordPress
Пустые категории — это категории, к которым не привязано ни одной записи. Они могут возникать по разным причинам: удаление записей без переназначения категорий, создание категорий для теста, импорт данных и т.д. Вот почему стоит регулярно удалять такие категории:
- Чистота структуры сайта: Упрощается навигация и управление содержимым.
- SEO оптимизация: Пустые категории создают «пустые» страницы, которые поисковики могут считать некачественным контентом.
- Улучшение пользовательского опыта: Посетители не видят ненужные разделы и быстрее находят нужный контент.
Как найти пустые категории с помощью SQL-запроса и кода
Самый быстрый способ определить пустые категории — выполнить SQL-запрос по базе данных. Однако делать это напрямую не всегда удобно, поэтому можно использовать PHP-функцию.
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_ может отличаться.
PHP-код для получения списка пустых категорий
function wptemplates_get_empty_categories() {
$args = [
'taxonomy' => 'category',
'hide_empty' => true // По умолчанию скрывает пустые, ставим false
];
// Получаем все категории
$all_categories = get_terms(array_merge($args, ['hide_empty' => false]));
$empty_cats = [];
foreach ($all_categories as $cat) {
if ($cat->count === 0) {
$empty_cats[] = $cat;
}
}
return $empty_cats;
}
Теперь вызов функции wptemplates_get_empty_categories() вернет массив пустых категорий, с которыми можно работать дальше.
Удаление пустых категорий программно
Чтобы удалить пустые категории, можно использовать стандартную функцию WordPress wp_delete_term(). Важно убедиться, что категория действительно пустая, чтобы не потерять данные.
Пример функции для удаления всех пустых категорий
function wptemplates_delete_empty_categories() {
$empty_cats = wptemplates_get_empty_categories();
foreach ($empty_cats as $cat) {
wp_delete_term($cat->term_id, 'category');
}
}
Эту функцию можно запускать вручную, например, через хук администратора или WP-CLI, чтобы безопасно очистить базу от пустых категорий.
Использование плагинов для автоматизации удаления пустых категорий
Если вы не хотите писать код, можно использовать готовые плагины. Вот несколько полезных вариантов:
1. Term Management Tools
Плагин позволяет массово удалять, объединять и редактировать категории и таксономии. В нем есть возможность фильтровать пустые категории и удалять их в один клик.
Скачать на официальном репозитории WordPress.
2. WP Bulk Delete
Очень мощный плагин для массового удаления постов и терминов с множеством фильтров, включая удаление пустых категорий. Поддерживает запланированные задачи и удобный интерфейс.
Дополнительно можно посмотреть описание и скачать на WPSHOP.
Практические рекомендации при работе с пустыми категориями
Перед удалением пустых категорий важно соблюдать несколько правил:
- Резервное копирование: Создайте резервную копию базы данных, чтобы можно было откатить изменения.
- Проверка связей: Убедитесь, что категории действительно пустые, а не отображают неверные счетчики.
- Автоматизация с умом: Если используете автоматические скрипты или плагины, контролируйте процесс и не запускайте удаление без понимания последствий.
Как интегрировать очистку пустых категорий в админпанель
Если хотите сделать инструмент удаления пустых категорий доступным в админке, можно добавить кнопку с обработчиком. Пример кода:
add_action('admin_menu', function() {
add_submenu_page('tools.php', 'Удалить пустые категории', 'Удалить пустые категории', 'manage_categories', 'wptemplates-delete-empty-cats', 'wptemplates_admin_page');
});
function wptemplates_admin_page() {
if (isset($_POST['wptemplates_delete_empty'])) {
wptemplates_delete_empty_categories();
echo '<div class="updated">Пустые категории удалены.</div>';
}
echo '<h1>Удаление пустых категорий</h1>';
echo '<form method="post">';
echo '<p><input type="submit" name="wptemplates_delete_empty" class="button button-primary" value="Удалить пустые категории" /></p>';
echo '</form>';
}
Этот код добавляет новую страницу в меню «Инструменты», где можно одним кликом запустить удаление пустых категорий.
Заключение
Удаление пустых категорий — важная задача для поддержания чистоты и эффективности вашего сайта на WordPress. Используя приведенные методы, вы сможете быстро находить и удалять ненужные категории как вручную, так и программно. Если хочется удобства — подойдет плагин WP Bulk Delete с расширенными возможностями, который можно найти с WPSHOP. Применяйте эти техники, чтобы ваш сайт оставался аккуратным и эффективным.