Видимость поста в зависимости от роли пользователя

Вопрос или проблема

Как сделать так, чтобы новые записи автоматически были приватными, кроме как для других пользователей, которые имеют ту же роль пользователя, что и автор записи?

Вы можете посмотреть этот плагин в репозитории WordPress. Advanced Access Manager

Этот плагин ограничивает доступ к панели управления постами/страницами в зависимости от ролей пользователей, авторов и т.д.

Надеюсь, этот плагин вам поможет.

Ответ или решение

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

1. Использование плагина

Одним из наиболее эффективных решений является плагин Advanced Access Manager. Этот плагин позволяет не только настраивать доступ к записям и страницам, но также управлять видимостью контента в зависимости от ролей пользователей.

Преимущества использования плагина:

  • Простота в использовании: Вам не нужно писать код. Все настройки можно произвести через админ-панель WordPress.
  • Гибкость: Плагин предлагает много настроек, позволяя вам контролировать доступ не только к записям, но и к страницам и другим элементам сайта.
  • Поддержка: Вы всегда можете обратиться к документации плагина или к сообществу пользователей для получения помощи.

Как настроить доступ с помощью AAM:

  1. Установите и активируйте плагин Advanced Access Manager из репозитория WordPress.
  2. Перейдите в меню AAM в админ-панели.
  3. В разделе «Настройки ролей» выберите нужную роль пользователей.
  4. Установите параметры для доступа к записям, чтобы разрешить видимость только для пользователей с той же ролью, что и у автора поста.
  5. Сохраните изменения.

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 является отличным решением для быстрого и удобного управления доступом. Однако, если вам необходимо более точное управление функциональностью, написание собственного кода может быть предпочтительнее.

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

Оцените материал
Добавить комментарий

Капча загружается...