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

Иногда возникает необходимость ограничить количество публикаций, которые может создавать пользователь или роль в WordPress. Это бывает полезно, например, если вы ведёте сайт с платным доступом к публикации контента, или хотите контролировать нагрузку на сайт, или же ограничить новичков в количестве создаваемого контента.

Почему важно ограничивать число публикаций в WordPress

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

  • Перегрузке базы данных и снижению производительности сайта.
  • Нарушению правил сайта, если публикации должны проходить модерацию.
  • Злоупотреблению правами пользователей, особенно если у них есть возможность публиковать без контроля.

Контроль количества публикаций помогает управлять качеством и количеством контента и организовать процесс публикации более эффективно.

Способы ограничения публикаций в WordPress

Есть несколько вариантов, как реализовать ограничение:

  • Использовать готовые плагины.
  • Добавить кастомный код в functions.php или свой плагин.

Использование плагина "WPC Limit Posts"

Один из простых плагинов, который позволяет ограничить количество записей для пользователей по ролям. Его легко настроить через админку.

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

Пример кода: ограничение количества публикаций для роли "Автор"

Ниже пример функции для wpwp.ru, которая запрещает автору создавать новые записи, если он достиг лимита в 5 опубликованных постов.

function wpwp_limit_author_posts() {
    if (!current_user_can('author')) {
        return;
    }
    $user_id = get_current_user_id();
    $args = array(
        'author' => $user_id,
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => -1
    );
    $query = new WP_Query($args);
    $published_posts = $query->found_posts;

    $limit = 5; // Лимит публикаций

    if ($published_posts >= $limit) {
        wp_die('Вы достигли лимита публикаций ('.$limit.'). Пожалуйста, удалите старые записи для создания новых.');
    }
}
add_action('pre_get_posts', 'wpwp_limit_author_posts');

Этот код проверяет количество опубликованных постов автора и блокирует создание новых при достижении лимита.

Как улучшить ограничение с учётом разных статусов и типов записей

В примере выше учитываются только опубликованные записи. Можно расширить проверку, чтобы считать черновики и другие статусы, если это нужно:

function wpwp_limit_author_posts_full() {
    if (!current_user_can('author')) {
        return;
    }
    $user_id = get_current_user_id();
    $args = array(
        'author' => $user_id,
        'post_type' => 'post',
        'post_status' => array('publish', 'pending', 'draft'),
        'posts_per_page' => -1
    );
    $query = new WP_Query($args);
    $total_posts = $query->found_posts;

    $limit = 10; // Новый лимит

    if ($total_posts >= $limit) {
        wp_die('Вы достигли лимита публикаций (включая черновики и ожидание модерации): '.$limit.'.');
    }
}
add_action('pre_get_posts', 'wpwp_limit_author_posts_full');

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

Ограничение публикаций с помощью AJAX и кастомных уведомлений

Чтобы улучшить UX, стоит добавить проверку лимита ещё до сохранения записи с помощью AJAX. Это позволит предупредить пользователя без перезагрузки страницы.

Пример простого AJAX-запроса для проверки лимита:

add_action('wp_ajax_wpwp_check_post_limit', 'wpwp_check_post_limit_callback');
function wpwp_check_post_limit_callback() {
    $user_id = get_current_user_id();
    $args = array(
        'author' => $user_id,
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => -1
    );
    $query = new WP_Query($args);
    $limit = 5;
    if ($query->found_posts >= $limit) {
        wp_send_json_error('Лимит публикаций достигнут.');
    } else {
        wp_send_json_success('Можно создавать новые публикации.');
    }
    wp_die();
}

И JS код для вызова:

jQuery(document).ready(function($){
    $('#publish').on('click', function(e){
        e.preventDefault();
        $.post(ajaxurl, {action: 'wpwp_check_post_limit'}, function(response){
            if(response.success) {
                $('#post').submit();
            } else {
                alert(response.data);
            }
        });
    });
});

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

Советы по управлению ограничениями на wpwp.ru

Если вы используете плагины для управления публикациями и ролями, например, Clearfy Pro, можно дополнительно оптимизировать ограничения и управление правами пользователей.

Также для отзывов и комментариев по публикациям полезен плагин WPRemark, который поможет контролировать качество контента.

Итоги

Ограничение количества публикаций — эффективный способ контроля контента и ресурсов сайта. Простые решения с кодом или плагины помогут быстро внедрить эту логику, а расширенные методы с AJAX улучшат взаимодействие с пользователем.

Используйте приведённые примеры как основу и адаптируйте их под конкретные задачи вашего проекта на WordPress.

Установка и настройка Redis кэша для WordPress
16.12.2025
WooCommerce: как сделать автоподтверждение и изменение статуса заказа после оплаты
21.05.2026
Использование хуков для изменения заголовка страницы в WordPress
09.12.2025
Как удалить пустые теги HTML в WordPress
29.01.2026
Как избежать проблем при миграции WordPress с применением плагинов
17.01.2026