Разрешить «подписчику» загружать медиафайлы - «Извините, вам не разрешено прикреплять файлы к этому сообщению». - PullRequest
0 голосов
/ 31 марта 2020

Я использую плагин Wordpress "Отправленные пользователем сообщения", чтобы позволить определенному пользователю писать сообщения из внешнего интерфейса.

Я не хочу, чтобы они видели другие сообщения в бэкэнде, и я хочу, чтобы они иметь как можно меньше прав доступа. Поэтому я хочу, чтобы они были только «подписчиками».

Единственная проблема, с которой я столкнулся сейчас, заключается в том, что «подписчикам» не разрешено загружать файлы, и поэтому кнопка «Добавить мультимедиа» не была видна. Я решил это, добавив этот код:

if ( current_user_can('subscriber') && !current_user_can('upload_files') )
add_action('admin_init', 'allow_subscriber_uploads');
function allow_subscriber_uploads() {
    $subscriber = get_role('subscriber');
    $subscriber->add_cap('upload_files');       
}

С этим кодом есть кнопка «Добавить медиа», «подписчик» может получить доступ к библиотеке библиотек (это нормально), и ему не разрешено удалять другие файлы (также хорошо).

Но когда я пытаюсь загрузить файлы в редакторе внешнего интерфейса с помощью «подписчика», появляется следующая ошибка: «Извините, вам не разрешено прикреплять файлы к этому сообщению . ".

Я уже пытался добавить больше ролей, подобных этой:

if ( current_user_can('subscriber') && !current_user_can('upload_files') )
add_action('admin_init', 'allow_subscriber_uploads');
function allow_subscriber_uploads() {
    $subscriber = get_role('subscriber');
    $subscriber->add_cap('upload_files');
    $subscriber->add_cap('edit_attachments');
    $subscriber->add_cap('edit_posts');
    $subscriber->add_cap('edit_published_pages');
    $subscriber->add_cap('edit_others_pages');
    $subscriber->add_cap('edit_others_posts');
    $subscriber->add_cap('level_0');
    $subscriber->add_cap('level_1');        
}

К сожалению, это все еще не работает, появляется та же ошибка. Любые идеи, почему это не работает и какие роли необходимы, чтобы сделать эту работу? Любые другие способы решить эту проблему?

Другая идея, которую я имел, состояла в том, чтобы дать им роль «участника» и затем удостовериться, что они не могут получить доступ к бэкэнду, но это казалось более сложным способом, чем просто позволить » подписчик "для загрузки медиафайлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...