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

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

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

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

Попай

АДМИНИСТРАТОР
Попай

Попай

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

YouWeb

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

Karolina

НОВИЧОК
Karolina

Karolina

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

Vladlen

НОВИЧОК
Vladlen

Vladlen

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

Jarom77

НОВИЧОК
J

Jarom77

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

manager88

НОВИЧОК
manager88

manager88

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

fsum

НОВИЧОК
fsum

fsum

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

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

Попай

АДМИНИСТРАТОР
Попай

Попай

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

fsum

НОВИЧОК
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,100
Это вам придется при каждом обновление движка закомментировать код.

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

fsum

НОВИЧОК
fsum

fsum

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

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

tumim

НОВИЧОК
tumim

tumim

НОВИЧОК
Сообщения
2
PHP файлы пользователь тоже сможет загружать?
 

tumim

НОВИЧОК
tumim

tumim

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

Попай

АДМИНИСТРАТОР
Попай

Попай

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

viksoft

НОВИЧОК
V

viksoft

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

Guerrero

НОВИЧОК
G

Guerrero

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

lechfak

НОВИЧОК
L

lechfak

НОВИЧОК
Сообщения
2
Спасибо. Уже его внедрила, вроде работает.
 

Топ поддержки

  • Altin
    Altin
    1,400.00 ₽
  • den
    den
    1,100.00 ₽
  • PolarFox
    PolarFox
    500.00 ₽
  • P
    proalex
    500.00 ₽
  • asis
    asis
    400.00 ₽
UNU.RU
Сверху