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

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

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

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

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
Иногда может понадобится участникам Вашего блога дать права для загрузки например изображений. И возникает вопрос: "Как в 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');
}
Эта функция проверяет роль пользователя. Если это участник, то ему открывается дополнительные полномочия в виде загрузки файлов. Вот и дел-то.

Если для Вас это все темный лес добавление функций, то воспользуйтесь плагином Для просмотра ссылки Войди или Зарегистрируйся.
 

YouWeb

ПРОВЕРЕННЫЙ

YouWeb

ПРОВЕРЕННЫЙ
Сообщения
10
Спасибо. Не люблю забивать сайт бесполезными плагинами, когда можно немного подправить в коде. Уже его внедрила, вроде работает.
 

Karolina

НОВИЧОК

Karolina

НОВИЧОК
Сообщения
3
Спасибо! Также попробовала Ваш код, и фантастика - помогло! Теперь мне будет проще создавать файлы или какие-нибудь документы с вставками.
 

Vladlen

НОВИЧОК

Vladlen

НОВИЧОК
Сообщения
8
Да, функция действительно полезная. Теперь, конечно, нужно еще научиться ограничивать объем загружаемых файлов, потому что место на сервере не бесконечное. Может тут кто-то знает как это можно сделать? Просто у меня на хостинге куплен небольшой объем места.
 

Jarom77

НОВИЧОК

Jarom77

НОВИЧОК
Сообщения
1
Отличная функция и меня также интересует какими способами можно ограничить объем загружаемых файлов. Будуочень благодарен если кто то подскажет мне как решить эту проблему.
 

manager88

НОВИЧОК

manager88

НОВИЧОК
Сообщения
2
Ограничивать загрузку файлов нужно, так как один участник может загрузить много фото или прикрепленных данных и не факт, что полезных, а другие – меньше. Поэтому тоже буду рада узнать как поставить ограничения.
 

fsum

НОВИЧОК

fsum

НОВИЧОК
Сообщения
3
Здравствуйте, вынес код в отдельный плагин — «Вордпресс» пишет ошибку:
Fatal error: Call to undefined function wp_get_current_user() in .../wp-includes/capabilities.php on line 1396

Подскажите, а из-за чего такое может быть?
 
Последнее редактирование:

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
С созданием плагинов не заморачивался, делаю с помощью снипетов через плагин Для просмотра ссылки Войди или Зарегистрируйся. У меня все работает нормально, проверял на многих сайтах.
 

fsum

НОВИЧОК

fsum

НОВИЧОК
Сообщения
3
Спасибо, Для просмотра ссылки Войди или Зарегистрируйся — полезный плагин оказался.

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

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

Отредактировал роль «Подписчика» через плагин Для просмотра ссылки Войди или Зарегистрируйся — добавил «Подписчику» способность 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;
    }
 

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
Это вам придется при каждом обновление движка закомментировать код.

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

fsum

НОВИЧОК

fsum

НОВИЧОК
Сообщения
3
Да, код придется при каждом обновлении комментить заново, но пока так))

Сразу пробовал поменять в коде «contributor» на «subscriber», но ничего не произошло — возможно конфликт с каким-нибудь плагином/темой или специфика задачи: надо сделать загрузку изображений к вопросам и ответам для плагина «Вопрос и ответ» (Для просмотра ссылки Войди или Зарегистрируйся).
 

tumim

НОВИЧОК

tumim

НОВИЧОК
Сообщения
2
Просто уточняю, как раз и не нужно, чтобы пользователи загружали что попало, нужно только фото.
 

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247

viksoft

НОВИЧОК

viksoft

НОВИЧОК
Сообщения
1
Да, функция действительно полезная. Теперь, конечно, нужно еще научиться ограничивать объем загружаемых файлов, потому что место на сервере не бесконечное. Может тут кто-то знает как это можно сделать? Просто у меня на хостинге куплен небольшой объем места.
В настройках PHP у хостера есть такой пункт "upload_max_filesize" задается в мегабайтах.
 

Guerrero

НОВИЧОК

Guerrero

НОВИЧОК
Сообщения
1
Вместе вс возможностью загружать фото, участник получает право на удаление любое изображение из библиотеки которое уже участвует в какой-то важной странице. Как это решить?
 
Сверху