В WordPress по умолчанию нет встроенного механизма, который ограничивал бы количество категорий, назначаемых одному посту. Однако в ряде проектов это может быть критично, чтобы сохранять структуру сайта понятной и не допускать чрезмерного назначения меток, что мешает SEO и навигации. В этой статье мы разберём, как на практике реализовать ограничение по числу категорий для постов, используя как код, так и плагины.
Почему важно ограничивать число категорий у постов
При неограниченном назначении категорий для записи возникают несколько проблем:
- Потеря смысловой нагрузки: если пост находится во многих категориях, становится сложно понять, какая из них основная.
- Проблемы с SEO: поисковые системы могут счесть такую запись дублирующейся или запутанной, что снижает релевантность.
- Ухудшение UX: пользователям сложнее ориентироваться на сайте, если посты разбросаны по множеству категорий.
Поэтому ограничение количества категорий – это хорошая практика для поддержки качества контента и структуры сайта.
Ограничение через добавление в functions.php: пример кода
Самый простой способ внедрить ограничение — добавить проверку на серверной стороне при сохранении записи. Рассмотрим пример, который ограничивает назначение категорий максимум тремя.
function wplog_limit_post_categories($post_ID) {
// Получаем категории, назначенные посту
$categories = wp_get_post_categories($post_ID);
// Максимальное число категорий
$max_categories = 3;
if (count($categories) > $max_categories) {
// Оставляем только первые три категории
$limited_categories = array_slice($categories, 0, $max_categories);
wp_set_post_categories($post_ID, $limited_categories);
// Добавляем уведомление в админке
add_filter('redirect_post_location', function($location) {
return add_query_arg('wplog_cat_limit', 1, $location);
});
}
return $post_ID;
}
add_action('save_post', 'wplog_limit_post_categories');
// Показываем сообщение об ограничении
function wplog_show_cat_limit_notice() {
if (!empty($_GET['wplog_cat_limit'])) {
echo '<div class="notice notice-warning is-dismissible">';
echo '<p>Внимание: количество категорий для поста ограничено тремя. Лишние категории были удалены.</p>';
echo '</div>';
}
}
add_action('admin_notices', 'wplog_show_cat_limit_notice');Этот код автоматически оставляет только первые 3 категории при сохранении записи. Если категорий больше, избыточные удаляются, а в админке появляется уведомление.
Как улучшить UX: ограничение выбора в админке
Хотя на сервере можно обрезать категории, для удобства лучше ограничивать выбор в интерфейсе редактирования поста. Для этого используем JavaScript, который блокирует возможность выбрать более 3 категорий.
function wplog_limit_categories_js() {
global $pagenow;
if (in_array($pagenow, array('post-new.php', 'post.php'))) {
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
const maxCats = 3;
const cats = document.querySelectorAll('#categorychecklist input[type=checkbox]');
function updateCheckboxes() {
const checked = Array.from(cats).filter(c => c.checked);
if (checked.length >= maxCats) {
cats.forEach(c => {
if (!c.checked) c.disabled = true;
});
} else {
cats.forEach(c => c.disabled = false);
}
}
cats.forEach(c => c.addEventListener('change', updateCheckboxes));
updateCheckboxes();
});
</script>
<?php
}
}
add_action('admin_footer', 'wplog_limit_categories_js');Код блокирует все чекбоксы категорий, если уже выбрано максимальное количество, и разблокирует их, если пользователь снимает выделение.
Использование плагинов для ограничения категорий
Если не хочется писать код, можно воспользоваться готовыми решениями. Вот несколько плагинов, которые позволяют ограничить количество категорий:
- Restrict Taxonomy Terms — позволяет ограничить выбор терминов для таксономий, включая категории.
- Limit Category Selection — простой плагин для ограничения выбора категорий на странице редактирования поста.
Для установки плагинов можно воспользоваться встроенным установщиком WordPress или скачать с официального репозитория. Для удобства рекомендуем посетить раздел плагинов на WPSHOP, где представлены полезные инструменты для работы с WordPress.
Как интегрировать ограничение категорий с плагином WPGPT для автоматизации контента
Если вы используете плагин WPGPT для генерации контента, стоит учесть ограничение категорий, чтобы не назначать слишком много автоматических меток.
Для этого можно добавить фильтр при автоматическом создании постов, который будет проверять и обрезать список категорий:
function wplog_wpgpt_limit_categories($post_data) {
$max_categories = 3;
if (!empty($post_data['post_category']) && count($post_data['post_category']) > $max_categories) {
$post_data['post_category'] = array_slice($post_data['post_category'], 0, $max_categories);
}
return $post_data;
}
add_filter('wpgpt_generate_post_data', 'wplog_wpgpt_limit_categories');Так вы сохраните структуру сайта и не перегрузите посты лишними категориями, даже при автоматическом создании контента.
Выводы и рекомендации
Ограничение количества категорий для постов в WordPress — важная задача для поддержания чистоты структуры сайта и улучшения SEO. Лучше всего комбинировать серверные проверки и ограничения в интерфейсе для удобства редакторов.
Используйте приведённые примеры кода или готовые плагины, чтобы быстро внедрить ограничение. А при использовании инструментов автоматизации, таких как WPGPT, не забывайте обрабатывать категории заранее.
Подробности и дополнительные полезные инструменты ищите на WPSHOP.