Как установить ограничение на число категорий в WordPress

В стандартном функционале WordPress нет возможности ограничить количество категорий, которые можно выбрать для одной записи. Однако в некоторых проектах это может быть критично для поддержания структуры контента и удобства навигации. В этой статье разберём, как установить ограничение на число категорий при создании и редактировании постов, используя как кодовые решения, так и плагины.

Зачем ограничивать число категорий для записи

Ограничение выбора категорий нужно, чтобы:

  • Избежать избыточной категоризации, которая ухудшает навигацию и SEO.
  • Соблюдать бизнес-логику сайта — например, когда каждая запись должна принадлежать только к одной или двум категориям.
  • Упростить администрирование и анализ данных на сайте.

Рассмотрим, как реализовать это на уровне интерфейса редактирования записи.

Ограничение выбора категорий с помощью кода в functions.php

Самый лёгкий способ — использовать JavaScript для контроля выбора чекбоксов в метабоксе категорий на странице редактирования записи.

Добавьте следующий код в файл functions.php вашей темы (или в плагин-сниппет):

function wplog_limit_categories_js() {
    global $pagenow;
    if ( $pagenow === 'post.php' || $pagenow === 'post-new.php' ) {
        ?>
        <script>
        document.addEventListener('DOMContentLoaded', function() {
            const maxCategories = 2; // Максимальное число категорий
            const checkboxes = document.querySelectorAll('#categorychecklist input[type=checkbox]');
            checkboxes.forEach(function(checkbox) {
                checkbox.addEventListener('change', function() {
                    const checkedCount = [...checkboxes].filter(cb => cb.checked).length;
                    if (checkedCount > maxCategories) {
                        this.checked = false;
                        alert('Можно выбрать не более ' + maxCategories + ' категорий.');
                    }
                });
            });
        });
        </script>
        <?php
    }
}
add_action('admin_footer-post.php', 'wplog_limit_categories_js');
add_action('admin_footer-post-new.php', 'wplog_limit_categories_js');

Этот скрипт отслеживает выбор категорий и не позволяет выбрать больше заданного лимита. В примере максимум — 2 категории.

Проверка на стороне сервера — обязательна!

Важно! Клиентский скрипт можно отключить, поэтому нужно также проверять данные при сохранении записи.

function wplog_limit_categories_save_post( $post_id ) {
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
        return;
    }
    if ( ! current_user_can('edit_post', $post_id) ) {
        return;
    }
    if ( isset($_POST['post_category']) ) {
        $categories = array_map('intval', $_POST['post_category']);
        $max = 2; // тот же лимит
        if ( count($categories) > $max ) {
            wp_die('Ошибка: можно выбрать не более ' . $max . ' категорий. <a href="javascript:history.back()">Вернуться назад</a>');
        }
    }
}
add_action('save_post', 'wplog_limit_categories_save_post');

Этот код прерывает сохранение, если категории выбраны сверх лимита, и выводит ошибку.

Использование плагинов для ограничения категорий

Если не хочется писать код, можно воспользоваться готовыми плагинами, например:

  • Restrict Categories — позволяет ограничить категории, доступные для выбора пользователям. Можно настроить и ограничения по количеству.
  • Clearfy Pro — многофункциональный плагин для оптимизации и настройки WordPress, включая ограничения и фильтры для категорий.

Эти инструменты удобны, если нужна более гибкая настройка и дополнительные функции.

Расширение функционала: ограничение выбора категорий по типу пользователя

В некоторых случаях нужно, чтобы разные роли пользователей имели разные ограничения. К примеру, редакторы могут выбирать до 5 категорий, а авторы — не более 2.

Для этого в функции проверки можно добавить проверку роли:

function wplog_limit_categories_save_post_role( $post_id ) {
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
        return;
    }
    if ( ! current_user_can('edit_post', $post_id) ) {
        return;
    }
    $user = wp_get_current_user();
    $max = 2;
    if ( in_array('editor', (array) $user->roles) ) {
        $max = 5;
    }
    if ( isset($_POST['post_category']) ) {
        $categories = array_map('intval', $_POST['post_category']);
        if ( count($categories) > $max ) {
            wp_die('Ошибка: можно выбрать не более ' . $max . ' категорий. <a href="javascript:history.back()">Вернуться назад</a>');
        }
    }
}
add_action('save_post', 'wplog_limit_categories_save_post_role');

Такой подход позволяет гибко настроить логику под разные группы пользователей.

Вывод

Ограничение числа категорий — простая, но важная настройка, которая помогает поддерживать порядок в структуре сайта. Используйте JavaScript для удобства пользователя и обязательную проверку на сервере для безопасности. При необходимости подключайте плагины с расширенными возможностями.

Если хотите расширить функционал WordPress с удобными инструментами, советуем ознакомиться с WPShop.ru — здесь есть полезные плагины и темы для любых задач.

Как сделать уникальный список постов с заказанным порядком в WordPress
01.02.2026
Как удалить неиспользуемые теги в WordPress с помощью кода
05.02.2026
Автоматическое удаление неактивных пользователей WordPress по дате последнего входа
23.05.2026
Как использовать хуки в WordPress для автоматизации задач
21.11.2025
Как автоматически изменять заголовок постов в WordPress с помощью кода
04.04.2026