Вопрос или проблема
Как сделать так, чтобы новые записи автоматически были приватными, кроме как для других пользователей, которые имеют ту же роль пользователя, что и автор записи?
Вы можете посмотреть этот плагин в репозитории WordPress. Advanced Access Manager
Этот плагин ограничивает доступ к панели управления постами/страницами в зависимости от ролей пользователей, авторов и т.д.
Надеюсь, этот плагин вам поможет.
Ответ или решение
Для реализации функции автоматического скрытия новых постов, делая их приватными и видимыми только для пользователей с тем же уровнем доступа, что и автор поста, вы можете воспользоваться двумя основными подходами: использовать специализированный плагин или внести изменения в код вашей темы WordPress. В этом ответе мы рассмотрим оба варианта.
1. Использование плагина
Одним из наиболее эффективных решений является плагин Advanced Access Manager. Этот плагин позволяет не только настраивать доступ к записям и страницам, но также управлять видимостью контента в зависимости от ролей пользователей.
Преимущества использования плагина:
- Простота в использовании: Вам не нужно писать код. Все настройки можно произвести через админ-панель WordPress.
- Гибкость: Плагин предлагает много настроек, позволяя вам контролировать доступ не только к записям, но и к страницам и другим элементам сайта.
- Поддержка: Вы всегда можете обратиться к документации плагина или к сообществу пользователей для получения помощи.
Как настроить доступ с помощью AAM:
- Установите и активируйте плагин Advanced Access Manager из репозитория WordPress.
- Перейдите в меню AAM в админ-панели.
- В разделе «Настройки ролей» выберите нужную роль пользователей.
- Установите параметры для доступа к записям, чтобы разрешить видимость только для пользователей с той же ролью, что и у автора поста.
- Сохраните изменения.
2. Создание пользовательского кода
Если вас не устраивает использование плагинов или вы хотите более тонкую настройку, вы можете добавить собственный код в файл functions.php
вашей темы. Вот пример кода, который сможет сделать новые посты приватными, доступными только для пользователей с тем же уровнем доступа:
add_action('wp_insert_post', 'set_post_private_for_role', 10, 2);
function set_post_private_for_role($post_id, $post) {
// Проверяем, что пост является новым
if ($post->post_status === 'auto-draft') return;
// Получаем роль автора
$author_id = $post->post_author;
$author_user = new WP_User($author_id);
$roles = $author_user->roles;
// Если автор имеет роль
if (!empty($roles)) {
// Устанавливаем статус поста на 'private'
$post->post_status = 'private';
// Сохраняем изменения
wp_update_post($post);
// Добавляем возможность чтения для пользователей с той же ролью
foreach ($roles as $role) {
if ($role !== 'administrator') { // Исключаем администраторов, если необходимо
add_post_type_support($post->post_type, $role);
}
}
}
}
Заключение
Выбор между использованием плагина и написанием собственного кода зависит от ваших технических знаний и потребностей проекта. Плагин Advanced Access Manager является отличным решением для быстрого и удобного управления доступом. Однако, если вам необходимо более точное управление функциональностью, написание собственного кода может быть предпочтительнее.
Помните, что вносить изменения в код следует с осторожностью, и всегда рекомендуется делать резервные копии вашего сайта перед внесением изменений, чтобы избежать потери данных или функциональности.