Мне нужно, чтобы на одном форуме пользователь мог писать сообщения, а на другом нет (только читать). Сейчас это невозможно.
Для того чтобы это оказалось возможным, нужно задать пользователю сразу несколько ролей, например, "читатель" и "писатель", чтобы потом их можно было выбрать галочкой на конкретном форуме.
Такая возможность существует в ворпрессе. Можно ли активировать множественный выбор в праймфоруме?

Здравствуйте.
Pafnuty сказал(а)
Такая возможность существует в ворпрессе
Ваш скриншот к вордпрессу отношения не имеет
Это добавляет какой-то сторонний плагин. А значит что это было кем то дополнительно написано т.к. движок позволяет назначить только одну роль. А по умолчанию ВП не умеет чтоб и царь и жнец и швец и на дуде..
Все что есть для форума можно найти в этом разделе
Но мне кажется готового решения нет.
Otshelnik-Fm сказал(а)
Здравствуйте.Pafnuty сказал(а)
Такая возможность существует в ворпрессеВаш скриншот к вордпрессу отношения не имеет
Вы не можете просматривать опубликованные ссылкиЭто добавляет какой-то сторонний плагин. А значит что это было кем то дополнительно написано т.к. движок позволяет назначить только одну роль. А по умолчанию ВП не умеет чтоб и царь и жнец и швец и на дуде..

Андрей CS сказал(а)
такой возможности нет
Можно ли тогда выбранный форум разрешить читать всем вне зависимости от допуска?
По-моему это хорошая идея. Вы можете в следующих версиях добавить такую галочку к каждому форуму, никто против не будет. Тем более что сейчас гостя все равно можно допустить в любой форум, и получается странная вещь, что если я кого-то не допущу на форум он все равно сможет туда попасть просто разлогинившись.
Привожу код, запрещающий избранным ролям публиковаться в отдельных форумах. Вход на форума остается для всех свободным, но зато писать сообщения и открывать темы они не могут.
/**
* Разрешает доступ на закрытый форум всем ролям
* если включена галка Гость
* Заимствовано из файла index.php в папке prime-role-access
*/
add_filter('pfm_check_forum_errors','idblr_check_access_global_view',5, 2);
function idblr_check_access_global_view($errors, $data){
$GLOBALS['guestrole'] = false;
if(!$data->is_forum && !$data->is_topic) return $errors;
$forum_id = $data->object->forum_id;
$roleAccess = pfm_get_meta($forum_id,'forum','role_access');
if(!$roleAccess) return $errors;
$PrimeUser_ = new PrimeUser();
global $PrimeUser;
//if(!in_array($PrimeUser->user_role, $roleAccess))
// $errors['error'][] = __('Приватный форум. Вам запрещено просматривать содержимое этого форума.');
$guestfound = in_array('guest', $roleAccess);
$selffound = in_array($PrimeUser_->user_role, $roleAccess);
if($guestfound && !$selffound) {
$PrimeUser->user_role = 'guest';
$PrimeUser_->user_role = 'guest';
$GLOBALS['guestrole'] = true;
}
return $errors;
}
/**
* Отключает текстовый редактор и выдает предупреждение
* об ограничении возможности оставлять сообщения
*/
add_filter('pfm_is_can','idblr_is_can',10,2);
function idblr_is_can($att, $action){
global $PrimeQuery;
if( !('post_create'===$action || 'topic_create'===$action) || !($PrimeQuery->is_forum || $PrimeQuery->is_topic) ) return $att;
//vardump($GLOBALS['guestrole']);
if( $GLOBALS['guestrole'] ) return 0;
return $att;
}
Код работает совместно c дополнениями
и

