• ДОБРО ПОЖАЛОВАТЬ В КЛУБ ПО WORDPRESS

    Мы активно растущий клуб по WordPress и нам нужна помощь каждого человека, в том числе и Ваша! Не стесняйтесь и станьте частью большого сообщества.
    Мы делимся новостями, отытом и полезными советами! Пройдите простую регистрацию, чтобы пользоваться всеми возможностями нашего клуба.

    Присоединяйтесь к нам, вам обязательно понравится - Присоединится

Сниппет Как в WordPress разрешить Участникам загружать файлы

Попай

АДМИНИСТРАТОР
Иногда может понадобится участникам Вашего блога дать права для загрузки например изображений. И возникает вопрос: "Как в WordPress разрешить Участникам загружать файлы?".
addfile.png

Всего немного кода, добавленных в functions.php Вашей темы, решат вам эту проблему и откроет возможность пользователям с ролью Участник(Contributor) загружать файлы.
Код:
if (current_user_can('contributor') && !current_user_can('upload_files')) :
    add_action('admin_init', 'razreshit_uchasnikam_gruzit_faili');
endif;
function razreshit_uchasnikam_gruzit_faili() {
    $uchasnik= get_role('contributor');
    $uchasnik->add_cap('upload_files');
}
Эта функция проверяет роль пользователя. Если это участник, то ему открывается дополнительные полномочия в виде загрузки файлов. Вот и дел-то.

Если для Вас это все темный лес добавление функций, то воспользуйтесь плагином User Role Editor.
 
Спасибо. Не люблю забивать сайт бесполезными плагинами, когда можно немного подправить в коде. Уже его внедрила, вроде работает.
 
Спасибо! Также попробовала Ваш код, и фантастика - помогло! Теперь мне будет проще создавать файлы или какие-нибудь документы с вставками.
 
Да, функция действительно полезная. Теперь, конечно, нужно еще научиться ограничивать объем загружаемых файлов, потому что место на сервере не бесконечное. Может тут кто-то знает как это можно сделать? Просто у меня на хостинге куплен небольшой объем места.
 
Отличная функция и меня также интересует какими способами можно ограничить объем загружаемых файлов. Будуочень благодарен если кто то подскажет мне как решить эту проблему.
 
Ограничивать загрузку файлов нужно, так как один участник может загрузить много фото или прикрепленных данных и не факт, что полезных, а другие – меньше. Поэтому тоже буду рада узнать как поставить ограничения.
 
Здравствуйте, вынес код в отдельный плагин — «Вордпресс» пишет ошибку:
Fatal error: Call to undefined function wp_get_current_user() in .../wp-includes/capabilities.php on line 1396

Подскажите, а из-за чего такое может быть?
 
Последнее редактирование:
С созданием плагинов не заморачивался, делаю с помощью снипетов через плагин Code Snippets. У меня все работает нормально, проверял на многих сайтах.
 
Спасибо, Code Snippets — полезный плагин оказался.

Если добавить код в functions.php, то ничего не происходит (возможность загруки файлов не появляется), хотя ошибки не выдает.

В итоге сделал иначе: надо было сделать для роли «Подписчик» (Subscriber) возможность прикреплять файлы к вопросам и ответам.

Отредактировал роль «Подписчика» через плагин User Role Editor — добавил «Подписчику» способность upload_files.

Кнопка загрузки файла появилась, стало можно прикреплять файлы из библиотеки уже загруженных, но при добавлении своих файлов, выдавалось сообщение «You don't have permission to attach files to this post».

Помогло только закомментить код в «/wp-admin/includes/ajax-actions.php»:
Код:
if ( isset( $_REQUEST['post_id'] ) ) {
        $post_id = $_REQUEST['post_id'];
        if ( ! current_user_can( 'edit_post', $post_id ) ) {
            echo wp_json_encode( array(
                'success' => false,
                'data'    => array(
                    'message'  => __( "You don't have permission to attach files to this post." ),
                    'filename' => $_FILES['async-upload']['name'],
                )
            ) );

            wp_die();
        }
    } else {
        $post_id = null;
    }
 
Это вам придется при каждом обновление движка закомментировать код.

А так код в стартовом топике предназначен для "Участников", а не для "Подписчиков". Попробуйте подправить код для подписчиков и я думаю он будет работать.
 
Да, код придется при каждом обновлении комментить заново, но пока так))

Сразу пробовал поменять в коде «contributor» на «subscriber», но ничего не произошло — возможно конфликт с каким-нибудь плагином/темой или специфика задачи: надо сделать загрузку изображений к вопросам и ответам для плагина «Вопрос и ответ» (DW Question & Answer).
 
Просто уточняю, как раз и не нужно, чтобы пользователи загружали что попало, нужно только фото.
 
Да, функция действительно полезная. Теперь, конечно, нужно еще научиться ограничивать объем загружаемых файлов, потому что место на сервере не бесконечное. Может тут кто-то знает как это можно сделать? Просто у меня на хостинге куплен небольшой объем места.
В настройках PHP у хостера есть такой пункт "upload_max_filesize" задается в мегабайтах.
 
Вместе вс возможностью загружать фото, участник получает право на удаление любое изображение из библиотеки которое уже участвует в какой-то важной странице. Как это решить?
 
Назад
Сверху