Иногда необходимо ограничить количество публикаций, которые может создать определённый пользователь на сайте WordPress. Это бывает актуально для сайтов с несколькими авторами, чтобы контролировать качество контента и не допускать спама. В этой статье рассмотрим, как реализовать такую функцию с помощью кода и плагинов.
Почему важно ограничивать число публикаций на WordPress
Контроль над количеством публикаций помогает:
- Избежать перегрузки сайта большим количеством низкокачественного контента.
- Управлять ресурсами сервера, особенно на хостингах с ограничениями.
- Поддерживать дисциплину среди авторов и редакторов.
Часто стандартных настроек WordPress для этого нет, поэтому приходится использовать кастомные решения.
Реализация ограничения через код на примере wp-1.ru
Добавьте следующий код в файл functions.php вашей активной темы или в отдельный плагин. Код ограничит число публикаций типа "post" для пользователя с ролью "author" до 5 штук.
function wp1_limit_posts_number($data, $postarr) {
// Проверяем, создаётся ли новый пост
if ($data['post_type'] === 'post' && $data['post_status'] === 'publish') {
$user_id = get_current_user_id();
$user = get_userdata($user_id);
// Ограничение для роли 'author'
if (in_array('author', $user->roles)) {
$count = count_user_posts($user_id, 'post', true); // считаем опубликованные
if ($count >= 5) {
// Отменяем публикацию и возвращаем ошибку
wp_die('Превышено максимальное количество опубликованных записей (5) для вашей роли.');
}
}
}
return $data;
}
add_filter('wp_insert_post_data', 'wp1_limit_posts_number', 10, 2);
В этом коде мы используем фильтр wp_insert_post_data, чтобы перехватить процесс сохранения записи. Если пользователь с ролью «author» уже имеет 5 и более опубликованных постов, публикация новой будет заблокирована с сообщением об ошибке.
Расширение ограничения на другие роли и типы записей
Можно легко добавить другие роли или типы постов, например, для типа "custom_post_type" или роли "contributor". Для этого модифицируйте условие:
if (($data['post_type'] === 'post' || $data['post_type'] === 'custom_post_type')
&& in_array($user->roles, ['author', 'contributor'])) { ... }
Использование плагинов для ограничения количества публикаций
Если вы не хотите писать код, есть плагины, которые помогут ограничить число публикаций пользователей. Вот несколько примеров:
- PublishPress Permissions — мощный плагин для управления ролями и правами, позволяет настроить ограничения по публикациям.
- WP Limit Posts
- Restrict Author Posting
Все эти плагины можно найти на официальном репозитории WordPress или на сайте WPSHOP.
Практические советы по внедрению ограничения на wp-1.ru
1. Тестируйте код или плагин на тестовом сайте, чтобы избежать блокировки администраторов.
2. Уведомляйте пользователей о лимите в интерфейсе — добавьте предупреждение в админке с помощью хука admin_notices.
3. Продумайте логику для исключений — например, администраторы или редакторы не должны ограничиваться.
Пример уведомления пользователя о лимите публикаций
function wp1_show_limit_notice() {
$user = wp_get_current_user();
if (in_array('author', $user->roles)) {
$count = count_user_posts($user->ID, 'post', true);
if ($count >= 5) {
echo '<div class="notice notice-error is-dismissible"><p>Вы достигли лимита в 5 опубликованных записей.</p></div>';
}
}
}
add_action('admin_notices', 'wp1_show_limit_notice');
Выводы
Ограничение количества публикаций для пользователей — полезный инструмент для управления контентом на сайте. Реализовать его можно как с помощью простого кода, так и с помощью специальных плагинов. Важно учитывать роль пользователя и уведомлять его о достигнутом лимите.
Если хотите расширить функционал, рекомендую посмотреть на плагин Clearfy Pro, который содержит множество полезных настроек для администрирования WordPress.